gpt4 book ai didi

java - 通过 JAX-RS 的 RESTful,@QueryParam 和@Consume 的常见用法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:49 25 4
gpt4 key购买 nike

我是网络服务方面的新手。我的任务是将现有的软件组件转换为 Web 服务。我做了一些研究,然后决定使用 JAX-RS。我很难决定何时使用@QueryParam 以及何时使用@Consume,因为它们似乎能够实现相同的目标。

例如,假设我有一个名为 read() 的方法,它以一本书作为参数。

public class AReader { public void read(Book book){...} }
public class Book { public String author; public String name; }

当使用 JAX-RS 注释翻译它时,我可以

  • 使用@POST 和@QueryParam 接受作者和姓名参数或
  • 使用@POST 和@Consumes 在正文中使用 XML 或 JSON 格式的 Book 文本表示。

我的问题是@QueryParam 和@Consume 的常见用法是什么。这只是个人喜好还是普遍做法?

我找到了很多关于@PathParam 和@QueryParam 用法的信息,但没有找到@QueryParam 和@Consumes 的用法。

提前致谢...

最佳答案

查询参数最适合表示与资源表示无关的请求方面。

例如,如果您正在设计一个 RESTful 网络服务,并且如果您正在通过 POST 请求创建一本新书,那么理想情况下请求的主体应该包含所需媒体类型的资源表示 - application/json, text/xml, application/x-www-form-urlencoded 等。通过查询参数提供资源表示不会在线基于 HTTP 的 REST API 是如何设计的。此外,查询参数可以省略,因此提供的资源表示是不完整的,这将违反要求在 POST 和 PUT 操作中提供完整资源表示的设计原则。

查询参数更适合 GET 请求。假设您想要一个分页的请求集合,那么您将接受类似 /books?start=0&pagesize=10 的请求以获取前 10 本书。

关于java - 通过 JAX-RS 的 RESTful,@QueryParam 和@Consume 的常见用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19216924/

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