我想在一个Patch请求(json格式)中实现多个操作。 RESTEasy不支持开箱即用的补丁请求。如何提供自定义实现?
我想在一个Patch请求(json格式)中实现多个操作。 RESTEasy不支持开箱即用的补丁请求。如何提供自定义实现?
启用 PATCH
你需要定义一个带注释的注释 @HttpMethod:
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@HttpMethod("PATCH")
public @interface PATCH {}
Bill Burke的书“使用JAX-RS 2.0的RESTful Java”中描述了一个完整的例子。源代码可以在。中找到 resteasy存储库。
也许是JAX-RS 2.1。将 支持PATCH开箱即用。
更新: 如果要在一个请求中修补多个资源,则需要先识别它们。例如,如果您想为所有客户提供一定的营业额VIP状态,您可以使用如下资源方法:
@PATCH
@Path("/customers")
public Response patchCustomers(@QueryParam("minTurnover") Double minTurnover, InputStream is) {
// find and update customers
}
在实体中传递哪些信息取决于您。该 RFC 要求应用于资源的“一组变更”。这可能很简单 text/plain
喜欢 update: vip=true
。
这种更新的标准格式是 JSON-补丁:
PATCH /customers?minTurnover=1000 HTTP/1.1
Content-Type: application/json-patch
[
{
"op" : "replace",
"path" : "/vip",
"value" : "true"
},
{
... more operations ...
}
]
请注意,应将同一组操作应用于所有已识别的资源。
启用 PATCH
你需要定义一个带注释的注释 @HttpMethod:
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@HttpMethod("PATCH")
public @interface PATCH {}
Bill Burke的书“使用JAX-RS 2.0的RESTful Java”中描述了一个完整的例子。源代码可以在。中找到 resteasy存储库。
也许是JAX-RS 2.1。将 支持PATCH开箱即用。
更新: 如果要在一个请求中修补多个资源,则需要先识别它们。例如,如果您想为所有客户提供一定的营业额VIP状态,您可以使用如下资源方法:
@PATCH
@Path("/customers")
public Response patchCustomers(@QueryParam("minTurnover") Double minTurnover, InputStream is) {
// find and update customers
}
在实体中传递哪些信息取决于您。该 RFC 要求应用于资源的“一组变更”。这可能很简单 text/plain
喜欢 update: vip=true
。
这种更新的标准格式是 JSON-补丁:
PATCH /customers?minTurnover=1000 HTTP/1.1
Content-Type: application/json-patch
[
{
"op" : "replace",
"path" : "/vip",
"value" : "true"
},
{
... more operations ...
}
]
请注意,应将同一组操作应用于所有已识别的资源。