如何开发一个接受多个 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 服务方法的主要内容,如果未能解决你的问题,请参考以下文章

如何构建 REST 资源层次结构?

如何对接受参数的方法进行 REST API 调用

如何响应 RESTful Web 服务中的备用 URI

PHP RESTful

如何使 Django REST JWT 身份验证与多个 Web 服务器一起扩展?

如何在 Spring Boot 中记录 Rest Web 服务所花费的时间?