为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据HTTP标头值在RestControllers之间切换?

如何根据HTTP标头值在RestControllers之间切换?

慕桂英4014372 2021-04-09 14:32:53
我们正在考虑使用标头字段在我们的Spring Boot应用程序中指定REST API版本。我们如何告诉Spring Boot根据标头值重定向呼叫?我梦到这样的事情:@Path("/my/rest/path")@HeaderMapping(headerName="ApiVersion", headerValue="V1")public class V1Controller {    @GetMapping    public String myMethod() {    }}== and ==@Path("/my/rest/path")@HeaderMapping(headerName="ApiVersion", headerValue="V2")public class V2Controller {    @GetMapping    public String myMethod() {    }}对于这样的HTTP请求:GET /my/rest/path HTTP/1.1Accept: application/jsonApiVersion: V1== or ==GET /my/rest/path HTTP/1.1Accept: application/jsonApiVersion: V2
查看完整描述

2 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

这似乎可行:


@Path("/my/rest/path")

public class V1Controller {


    @GetMapping(headers = "ApiVersion=V1")

    public String myMethod() {

    }

}


== and ==


@Path("/my/rest/path")

public class V2Controller {


    @GetMapping(headers = "ApiVersion=V2")

    public String myMethod() {

    }

}

PS:尚未测试,但已在Spring引导教程中看到。


查看完整回答
反对 回复 2021-04-28
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

确实是:例如


PUT method #1

@RequestMapping(method=RequestMethod.PUT, value="/foo", 

headers="returnType=Foo")

public @ResponseBody Foo updateFoo(@RequestBody Foo foo) {

fooService.update(foo);

}


//PUT method #2

@RequestMapping(method=RequestMethod.PUT, value="/foo", 

headers="returnType=FooExtra")

public @ResponseBody FooExtra updateFoo(@RequestBody FooExtra fooExtra) {

fooService.update(fooExtra);

}

在这里您可以获得文档: 添加自定义标头


查看完整回答
反对 回复 2021-04-28
  • 2 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信