我有一个SpringRest控制器:
@RestController
@RequestMapping(value = "/myresource")
public class MyResourceController {
...
}
@RequestMapping(method = GET, value = "/{value1}/{value2}/{value3}", produces = MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8")
public ResponseEntity<MyResponseType> getMyResource(
@ApiParam(value = "...",...)
@PathVariable("value1") String value1,
@ApiParam(value = "...",...)
@PathVariable("value2") String value2,
@ApiParam(value = "...",...)
@PathVariable("value3") String value3) {
//...
}
http://myserver:8080/myresource/value1/value2/value3
http://myserver:8080/myresource/value1/value2/value3/
Swagger假设没有尾随斜线,我现在不能用Swagger发送请求。
我该怎么做才能使第一个URL工作而不是第二个?
非常感谢您的评论和回答。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/j2ee"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>(my) Services</display-name>
<filter>
<filter-name>SetCharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Provide ServletContext -->
<listener>
<listener-class>my.ServletContextUtils</listener-class>
</listener>
<!-- Expose request to current thread (required for session and request-scoping) -->
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
WEB-INF/config/spring-mvc-servlet.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
xmlns:env="http://my/schema"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://my/schema
http://my/schema/env-0.3.xsd">
<env:initialization />
<context:annotation-config />
<mvc:annotation-driven />
<mvc:default-servlet-handler/>
<context:component-scan base-package="my.myresource.restapi" />
<context:property-placeholder
ignore-unresolvable="true"
location="
WEB-INF/config/${my.environment}/webapp.properties" />
<!-- Swagger -->
<!-- swagger config -->
<bean class="my.restapi.swagger.SwaggerConfig"/>
webapp.properties包含的内容不多:
swagger.include-pattern=/(?!api-docs|version).*
我有很多应用程序使用Spring Rest注释,我的API可以使用或不使用尾随斜杠。
这可能是您的Spring MVC配置或您正在使用的http服务器的问题。
您能否发布一些代码片段与您的Spring MVC配置。如果知道您使用的是哪个Spring版本,以及您是如何为WebApp服务的,那将是很好的。
问题似乎出在URL中的点上。
引用:Spring MVC@PathVariable with dot(.)正在被截断
我要做的是,当用户访问时,应该将他们代理到运行在端口80上的apache。 当我访问时,我会得到正确的结果(index.php)。当我访问时,我会得到正确的结果(404来自apache)。当我访问时,我会得到正确的结果(404来自nginx)。当我访问时,我会得到正确的结果(404来自apache)。 问题是当我访问时。我得到一个301响应,并被重定向到(注意后面的斜杠,当然还有'localhos
问题内容: 我的api要求在api调用后加一个斜杠。我想知道如何以棱角分明的方式实现这一目标。 所以我需要能够访问,或者 我尝试通过以下方式进行访问: 和一个 但结果为或查询。 我怎样才能迫使它总是和 问题答案: 这似乎已得到解决:https : //github.com/angular/angular.js/pull/5560 您现在可以通过以下方式配置它:
我有一个Spring Boot1.3应用程序,其中server.contextpath=/ts处于开发模式。 在浏览器中,我可以访问http://localhost:8888/ts或http://localhost:8888/ts/ 谢了。
当我调用spring-boot应用程序的上下文根“localhost:8080/api/players”时,它通过注释@getmapping(path={“/”,“”})映射到RestController方法中,将alway redirect(httpstatus:307临时redirect)下拖到“localhost:8080/api/players/”,并在末尾添加尾随斜杠。 我的应用程序上下
问题内容: 我正在使用Node.js和Express,并且具有以下路由: 我有一个Disqus小部件上我的课的网页,我注意到一个奇怪的行为是要当和我得到两个不同的网页(对他们都有我以前在Disqus增加,而另一个没有评论评论)。 有没有一种方法可以将我的所有网址“规范化”为不加斜杠?我尝试添加标志来表达,但结果相同 谢谢 问题答案: 尝试为此添加中间件;
我正在阅读Flask quickstart指南,但是使用变量进行路由的示例对我来说并不适用。 http://127.0.0.1:5000/user/bob重定向到http://127.0.0.1:5000/user/bob/给我一个404 我还尝试了与指南中完全相同的代码。我的第一个要点中的错误是意料之中的吗?快速入门版本中的代码应该工作吗?还是我误解了什么? 我使用的是Python 2.7.10