@RequestHeader Map<String, String> 在 swagger UI 中不起作用

问题描述 投票:0回答:1

我有一个带有方法@GET的控制器。我想将标头作为 Map 传递,但传递标头的字段在 swagger UI 端不可见。

例如:当我尝试将标头作为 @RequestHeader String 传递时,某些字段在 swagger UI 部分上可见,就在传递正文的位置上方,但注释后有一个 Map,根本没有地方放置此标头.

public ResponseEntity<MyObject> getObject(
            @RequestHeader String test,
            @RequestHeader Map<String, String> headers) {

//logic here
}

enter image description here

我希望能够通过某个文本框传递三个标头(例如 @RequestBody 正在工作)。为了不创建无数带有具体标题的标签,我想通过 swagger UI 通过地图传递标题。可以吗?

谢谢

java spring-boot swagger swagger-ui swagger-3.0
1个回答
0
投票

您不应该像这样通过请求标头传递数据。您应该使用请求参数 (@RequestParam)、路径变量 (@PathVariable) 或通过 POST 正文 (@RequestBody)。请注意,GET 不支持请求正文。

这是一个使用 POST / @PathVariable 和 @RequestBody 的示例

public class MyBodyBean {
   private String value1;
   private String value2;
   private String value3;

   // getters / setters
}
public class FooController {
   @PostMapping("/foo/{test}/do-something/")
   public ResponseEntity doSomething(
      @PathVariable("type") test,
      @RequestBody MyBodyBean body) 
   {
      doStuff(test, body);
      return ResponseEntity.ok(HttpStatus.OK);
   }
}

要调用此功能,您需要将 JSON 主体发布到

/foo/xxx/do-something/

© www.soinside.com 2019 - 2024. All rights reserved.