如何开发一个接受多个 URI 的 REST Web 服务方法
Posted
技术标签:
【中文标题】如何开发一个接受多个 URI 的 REST Web 服务方法【英文标题】:How to develop a REST Webservice method which accepts multiple URI 【发布时间】:2018-10-04 12:50:51 【问题描述】:例如
如果我们有方法
@RequestMapping(/add)
public Response add(@RequestParam List elements)
上面的方法服务于 URL https://localhost:8080/add
我在采访中问过我们如何拥有一个服务于多个 URI 的单一 Web 服务,但我无法回答,因为我认为我们应该为每个方法都有唯一的 URI
对此的跟进,我们如何有一个方法返回从邮递员客户端选择的任何格式(JSON、XML、纯文本)。
【问题讨论】:
请关注Multiple Spring @RequestMapping annotations 您应该可以使用@RequestMapping(path="/add", "/delete")
,并且可以包含produces="application/json", "text/xml"
。
【参考方案1】:
修改 URI:
@RequestMapping(value = "/", produces =
MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE
)
public Response add(@RequestParam List elements)
【讨论】:
是否需要将所有的媒体类型一一添加。难道我们只有一个选项,比如 MediaType.ALL 或 MediaType.Any 对于所有类型,删除“produces”。我以为你需要它 所以如果我删除了产品,那么它会接受来自邮递员客户端的任何 Mediatype 不一定。您可以使用consumes
来定义您要接受的数据类型
不,我想接受任何类型的数据。我应该使用生产还是消费【参考方案2】:
对于第一个问题,有很多方法可以做到这一点 Spring restTemplate 可以让您以另一种方法调用休息服务,因此您所要做的就是在请求另一个 uri 时调用您的休息服务 您还可以使用代理(Web 服务器代理)将相同的 Web 服务映射到多个 URI
对于第二个,您需要将格式作为参数传递并在执行时调用与格式关联的特定服务
希望对你有帮助
【讨论】:
以上是关于如何开发一个接受多个 URI 的 REST Web 服务方法的主要内容,如果未能解决你的问题,请参考以下文章