请求映射,省略特定情况而不是捕获所有情况
Request Mappings, leave out specific cases instead of catching all
简介
我们已经创建了一个请求映射如下:
@RequestMapping(path = "/{project}/{resource}/{language}", method = RequestMethod.GET)
public ResponseEntity<Resource> get(
@PathVariable String project,
@PathVariable String resource,
@PathVariable String language) throws IOException {
我们可以更改路径并添加前缀以避免出现问题,但这已被认为是不需要的。
path = "/generateReport/{project}/{resource}/{language}"
不幸的是,这个当前的映射给 swagger-ui.html 带来了问题。
当我们从: http://localhost:8023/swagger-ui.html 调用它时,页面是空白的,因为所有遵循格式 a/b/c
的请求都被劫持了。
示例:
<link rel="stylesheet" type="text/css" href="webjars/springfox-swagger-ui/springfox.css?v=2.8.0-SNAPSHOT" >
<link rel="stylesheet" type="text/css" href="webjars/springfox-swagger-ui/swagger-ui.css?v=2.8.0-SNAPSHOT" >
<link rel="icon" type="image/png" href="webjars/springfox-swagger-ui/favicon-32x32.png?v=2.8.0-SNAPSHOT" sizes="32x32" />
<link rel="icon" type="image/png" href="webjars/springfox-swagger-ui/favicon-16x16.png?v=2.8.0-SNAPSHOT" sizes="16x16" />
和
<script src="webjars/springfox-swagger-ui/swagger-ui-bundle.js?v=2.8.0-SNAPSHOT"> </script>
<script src="webjars/springfox-swagger-ui/swagger-ui-standalone-preset.js?v=2.8.0-SNAPSHOT"> </script>
<script src="webjars/springfox-swagger-ui/springfox.js?v=2.8.0-SNAPSHOT"> </script>
问题
那我该如何处理呢?有没有办法指定以 webjars
开头的请求应该重定向到其他地方?
我尝试使用 consumes
关键字,这对客户端有效(尽管我不喜欢这样使用内容类型)。
consumes = MediaType.APPLICATION_JSON_VALUE
.
不幸的是,现在我在尝试访问 swagger-ui.html 时得到以下信息:
DefaultHandlerExceptionResolver Resolved exception caused by Handler execution: org.springframework.web.HttpMediaTypeNotSupportedException: Content type '' not supported
正在为swagger-ui.html生成HTML,但是无法加载它需要的所有资源。
有什么想法吗?
更新
我找到了使用路径变量和正则表达式的解决方法:
@RequestMapping(path = "/{project:^(?!webjars).+}/{resource}/{language}", method = RequestMethod.GET)
public ResponseEntity<Resource> get(
@PathVariable String project,
@PathVariable String resource,
@PathVariable String language) throws IOException {
但是,我不喜欢这个 100%
我找到了使用路径变量和正则表达式的解决方法:
@RequestMapping(path = "/{project:^(?!webjars).+}/{resource}/{language}", method = RequestMethod.GET)
public ResponseEntity<Resource> get(
@PathVariable String project,
@PathVariable String resource,
@PathVariable String language) throws IOException {
但是,仍然感谢新的答案!
简介
我们已经创建了一个请求映射如下:
@RequestMapping(path = "/{project}/{resource}/{language}", method = RequestMethod.GET)
public ResponseEntity<Resource> get(
@PathVariable String project,
@PathVariable String resource,
@PathVariable String language) throws IOException {
我们可以更改路径并添加前缀以避免出现问题,但这已被认为是不需要的。
path = "/generateReport/{project}/{resource}/{language}"
不幸的是,这个当前的映射给 swagger-ui.html 带来了问题。
当我们从: http://localhost:8023/swagger-ui.html 调用它时,页面是空白的,因为所有遵循格式 a/b/c
的请求都被劫持了。
示例:
<link rel="stylesheet" type="text/css" href="webjars/springfox-swagger-ui/springfox.css?v=2.8.0-SNAPSHOT" >
<link rel="stylesheet" type="text/css" href="webjars/springfox-swagger-ui/swagger-ui.css?v=2.8.0-SNAPSHOT" >
<link rel="icon" type="image/png" href="webjars/springfox-swagger-ui/favicon-32x32.png?v=2.8.0-SNAPSHOT" sizes="32x32" />
<link rel="icon" type="image/png" href="webjars/springfox-swagger-ui/favicon-16x16.png?v=2.8.0-SNAPSHOT" sizes="16x16" />
和
<script src="webjars/springfox-swagger-ui/swagger-ui-bundle.js?v=2.8.0-SNAPSHOT"> </script>
<script src="webjars/springfox-swagger-ui/swagger-ui-standalone-preset.js?v=2.8.0-SNAPSHOT"> </script>
<script src="webjars/springfox-swagger-ui/springfox.js?v=2.8.0-SNAPSHOT"> </script>
问题
那我该如何处理呢?有没有办法指定以 webjars
开头的请求应该重定向到其他地方?
我尝试使用 consumes
关键字,这对客户端有效(尽管我不喜欢这样使用内容类型)。
consumes = MediaType.APPLICATION_JSON_VALUE
.
不幸的是,现在我在尝试访问 swagger-ui.html 时得到以下信息:
DefaultHandlerExceptionResolver Resolved exception caused by Handler execution: org.springframework.web.HttpMediaTypeNotSupportedException: Content type '' not supported
正在为swagger-ui.html生成HTML,但是无法加载它需要的所有资源。
有什么想法吗?
更新
我找到了使用路径变量和正则表达式的解决方法:
@RequestMapping(path = "/{project:^(?!webjars).+}/{resource}/{language}", method = RequestMethod.GET)
public ResponseEntity<Resource> get(
@PathVariable String project,
@PathVariable String resource,
@PathVariable String language) throws IOException {
但是,我不喜欢这个 100%
我找到了使用路径变量和正则表达式的解决方法:
@RequestMapping(path = "/{project:^(?!webjars).+}/{resource}/{language}", method = RequestMethod.GET)
public ResponseEntity<Resource> get(
@PathVariable String project,
@PathVariable String resource,
@PathVariable String language) throws IOException {
但是,仍然感谢新的答案!