我目前正在使用 Jersey 框架(JAX-RS 实现)来构建 RESTful Web 服务。项目中的资源类已经实现了标准的 HTTP 操作 - GET、POST 和 DELETE。我想弄清楚如何从客户端向这些方法发送请求参数。
对于 GET,它将在查询字符串中(使用 @QueryParam
提取),POST 将是名称/值对列表(使用 @FormParam
提取)与请求正文一起发送。我使用 HTTPClient 测试了它们并且工作正常。对于 DELETE 操作,我没有找到有关参数类型/格式的任何决定性答案。 DELETE 操作是否接收查询字符串(使用 @QueryParam
提取)或正文(使用 @FormParam
提取)中的参数?
在网络上的大多数 DELETE 示例中,我观察到 @PathParam
的使用参数提取的注释(这将再次来自查询字符串)。
这是将参数传递给 DELETE 方法的正确方法吗?我只是想在这里小心一点,这样我就不会违反任何 REST 原则。
最佳答案
是的,这取决于您,但是当我了解 REST 意识形态时,DELETE URL 应该删除 GET URL 请求返回的内容。例如,如果
GET http://server/app/item/45678
返回 ID 为 45678 的项目,
DELETE http://server/app/item/45678
应该删除它。
因此,我认为使用 PathParam 比使用 QueryParam 更好,因为 QueryParam 可以用来控制某些方面的工作。
DELETE http://server/app/item/45678?wipeData=true
关于rest - 使用 REST 删除 http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4045484/