gpt4 book ai didi

java - 为请求映射 header spring 创建自定义注释

转载 作者:行者123 更新时间:2023-11-30 06:01:19 25 4
gpt4 key购买 nike

我正在使用 spring-boot-1.5.6。我里面有一个 Controller ,大约有 8 个请求映射,它们具有公共(public) header 。下面提到的 header 对于 Controller 中的大多数方法都是必需的,并且提及所有 header 看起来很难看,有没有办法概括或自定义注释,这样我就不想在所有方法中复制 header 。

@RestController
public class RestController {
private static final Logger logger = LoggerFactory.getLogger(RestController.class);

/**
* Simply chooses a few headers, logs them and add them to model to
* showHeaders view to render to the user.
*/

@GetMapping(value="/showheaders")

public String getHeaders(
@RequestHeader(value="sample") String sample,
@RequestHeader(value="sample1") String sample1,
@RequestHeader(value="sample2") String sample2,
@RequestHeader(value="sample3") String sample3,
@RequestHeader(value="sample4") String sample4) {
logger.info("Inside getHeaders() method...");
logger.info("sample : " + sample);
logger.info("sample1 : " + sample1);
logger.info("sample2 : " + sample2);
logger.info("sample3 : " + sample3);
logger.info("sample4 : " + sample4);

}

预期:

@RestController
public class RestController {
private static final Logger logger = LoggerFactory.getLogger(RestController.class);

/**
* Simply chooses a few headers, logs them and add them to model to
* showHeaders view to render to the user.
*/

@GetMapping(value="/showheaders")

public String getHeaders(@MyHeaders headers) {
logger.info("Inside getHeaders() method...");
logger.info("sample : " + sample);
logger.info("sample1 : " + sample1);
logger.info("sample2 : " + sample2);
logger.info("sample3 : " + sample3);
logger.info("sample4 : " + sample4);

}

我知道我们可以使用 @RequestHeader Map headers 但在 swagger 中,我想查看所有 header 参数名称。这样我们就可以传递方法的所有 header 。使用 map 不显示任何东西。

任何提示或建议都会受到重视。

最佳答案

您可以使用@ModelAttribute来实现此目的:

<小时/>

1.创建 header 持有者类:

public class MyheaderHolder {
private String sample;
private String sample1;
private String sample2;
private String sample3;
private String sample4;
//getter setters
}
<小时/>

2.定义ModelAttribute:

@ModelAttribute("myHeaderHolder")
public Something addSomething(@RequestHeader(value = "sample") String sample,
@RequestHeader(value = "sample1") String sample1,
@RequestHeader(value = "sample2") String sample2,
@RequestHeader(value = "sample3") String sample3,
@RequestHeader(value = "sample4") String sample4) {
return new MyHeaderHolder(name);
}
<小时/>

3.重构 getHeaders Controller 以使用 ModelAttribute

@GetMapping(value = "/showheaders")
public String getHeaders(@ModelAttribute MyHeaderHolder myHeaderHolder) {
logger.info("Inside getHeaders() method...");
logger.info("sample : " + myHeaderHolder.getSample());
logger.info("sample1 : " + myHeaderHolder.getSample1());
logger.info("sample2 : " + myHeaderHolder.getSample2());
logger.info("sample3 : " + myHeaderHolder.getSample3());
logger.info("sample4 : " + myHeaderHolder.getSample4());
}

关于java - 为请求映射 header spring 创建自定义注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52244134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com