【问题标题】:how to receive parameters with a PUT method in java web service如何在 java web 服务中使用 PUT 方法接收参数
【发布时间】:2012-09-11 08:38:59
【问题描述】:

所以我问了这个问题with the return type

现在我尝试像这样创建PUT 方法:

@PUT
@Path("deleteAbsence")
@Produces("text/html")
public Response deleteAbsence(@QueryParam("id") String absenceID) {
  String data = null;
  return Response.ok("asda {"+absenceID+"}").build();
}

我的absenceIDnull。我必须更改什么才能接收参数?

这是我从服务器收到的错误 415 的答案: response

【问题讨论】:

  • 顺便说一句,如果要删除资源,为什么要使用 PUT 而不是 DELETE?
  • 这不是调用其他方法。这是关于 API 以及这个 API 的作用。如果它删除一个资源,你可能应该使用 DELETE,如果它更新一个资源,你可能应该使用 PUT。如果您有空闲时间,请阅读tarlogonjava.blogspot.com/2012/04/…
  • 当您定义 url 时,请避免在您的 url 中使用动词作为练习,否则您可能最终会得到与每个操作相对应的 url。如果你不按预期的方式使用东西,你可能会被困在两者之间。

标签: java jax-rs put


【解决方案1】:

http://example.com/deleteAbsence/?id=42发送PUT请求

【讨论】:

  • 405 不是查询参数错误。这意味着给定 url 的 PUT 方法不存在。要么你没有注册你的资源,要么你使用了错误的 url。
  • 顺便说一句,如果您收到 405,则不会发生缺席ID。您根本不能到达该方法。
  • 我也收到 http 状态 415
  • 415 表示不支持的媒体类型。 @Consumes 注释与 Content-type 标头不匹配。 (如果使用了DELETE,则无关紧要,但PUT可能有body)
  • 您介意更新您的问题吗?你到底做了什么,你收到了什么。 Null、405 和 415 是完全不同的流。
【解决方案2】:

使用正确的查询参数调用资源:

PUT http://example.com/deleteAbsence/?id=42

【讨论】:

  • 你的答案不正确。你弄乱了查询和路径参数。
  • 如果我像示例中那样使用 GET 会是这样,但我使用的是 PUT,所以它是别的东西......无法弄清楚是什么
  • @user1103707 为什么您认为路径参数仅适用于 GET 请求?你有什么问题?
  • 我的问题是如何使用 PUT 接收参数
  • 在 JAX-RS 中,所有参数(路径、查询甚至矩阵)总是以相同的方式解析。如果您使用 GET、PUT、POST、DELETE 或其他任何方式,则没有区别。
【解决方案3】:

在我必须输入的内容中:

   "<"absenceIDString >2 "<"/absenceIDString>

方法如下:

@Consumes("application/xml")
@PUT
@Path("deleteAbsence")
@Produces("text/html")
public Response deleteAbsence( String absenceIDString) {
    String data = null;
    return Response.ok("asda {"+absenceIDString+"}").build();
   }

【讨论】:

  • 所以你将 id 移到 body 并添加了 @Consumes 来修复 415。不是很 RESTful 的方式。
【解决方案4】:

这与您在 MyEclipse 中的 Rest Web Service Explorer 配置有关。屏幕截图显示您的变量名称为absenseIdString,而它应该是id。确保您已将 Param Type 配置为 QueryParam。在 myeclisp 配置屏幕中,默认值为 PathParam。

查看tutorial

【讨论】:

    猜你喜欢
    • 2011-11-18
    • 2011-03-04
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多