我有一个spring rest控制器和两个单独的getmapping,它们具有相同的值,但每个都接受相同头的不同头值(即,一个get方法用于v1,一个get方法用于v2)。
@GetMapping(value = "/{id}", headers = { "Accept-version=v1"})
public UserV1 findByIdV1(@PathVariable long id) {
return ...;
}
@GetMapping(value = "/{id}", headers = { "Accept-version=v2"})
public UserV1 findByIdV2(@PathVariable long id) {
return ...;
}
如果实现没有从一个版本更改到另一个版本,那么最好的方法是使用一个可以接受任何一个头值的方法吗?
理想情况下,该解决方案将允许我使用不同的实现为不同的版本提供不同的方法,以便能够使用openapi正确地记录这些方法。类似于以下内容:
@GetMapping(value = "/{id}", headers = { "Accept-version=v1 OR Accept-version=v2"})
public UserV1 findByIdV1(@PathVariable long id) {
return ...;
}
// Different response, thus need different method to be able to document this.
@GetMapping(value = "/{id}", headers = { "Accept-version=v3"})
public UserV3 findByIdV2(@PathVariable long id) {
return ...;
}
1条答案
按热度按时间vfh0ocws1#
你可以用
@RequestHeader
要将头信息作为参数传递到方法中,请执行以下操作: