我有一个带有方法@GET的控制器。我想将标头作为 Map
例如:当我尝试将标头作为 @RequestHeader String 传递时,某些字段在 swagger UI 部分上可见,就在传递正文的位置上方,但注释后有一个 Map,根本没有地方放置此标头.
public ResponseEntity<MyObject> getObject(
@RequestHeader String test,
@RequestHeader Map<String, String> headers) {
//logic here
}
我希望能够通过某个文本框传递三个标头(例如 @RequestBody 正在工作)。为了不创建无数带有具体标题的标签,我想通过 swagger UI 通过地图传递标题。可以吗?
谢谢
您不应该像这样通过请求标头传递数据。您应该使用请求参数 (@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/