如何访问REST服务器的PUT请求的JSON主体

时间:2014-04-23 13:53:44

标签: restlet

如果我将JSON对象放入我的restlet,例如

curl -X PUT -H "Content-Type: application/json" -d '{"email":"foo@baar"}' http://localhost:8888/api/exitems/5629499534213120

如何检索原始JSON,即。我的restlet中的{"email":"foo@baar"}部分?

更新

以下是问题的背景......

我有一个Controller类,扩展ServerResource,它在我的一个模型POJO(Person)上处理REST CRUD操作。在update()(即PUT)方法中,我正在传递一个实例化的Person对象,但我不知道我的REST客户端是哪些字段是PUT。

  • 如果客户端PUT排除了一个属性(比如)familyName - 这意味着不要更新familyName',它在POJO中为空。

  • 另一方面,如果客户端PUT为familyName的空值 - 意图将“familyName”设置为null',则POJO familyName也为null。

如何区分这两种情况?

1 个答案:

答案 0 :(得分:1)

在扩展ServerResource时,可以调用getRequestEntity()来检索表示,也可以在@Post带注释的Java方法上声明Representation参数。

<强>更新

查看更新后的问题,您似乎没有正确使用PUT方法。您通过PUT请求传递的实体应包含目标资源的完整新状态。

在您的情况下,您似乎只想进行部分更新。如果你真的需要这样的优化级别,你应该考虑使用PATCH方法。