我有一个动态的Web项目,我在其中使用apache cxf和HTTP。现在,我之前使用过POST和GET请求。
在java方面,我使用注释@GET/@POST
等,从UI我可以向它发出请求。
我刚刚阅读了PUT
请求,我无法在上述方案中做得很好。据我所知,PUT用于添加数据或上传数据。现在,我不明白的是
答案 0 :(得分:4)
HTTP PUT由使用@PUT
注释的方法处理。
@PUT
@Path("/foo/{id}")
@Consumes(MediaType.APPLICATION_JSON)
public Response putAFoo(@PathParam("id") int theId, Foo theFoo) {
// Save theFoo which has theId or do what you want with it.
if (fooWasCreated) {
return Response.created("/foo/" + theId).build();
} else {
return Response.ok().build();
}
}
为什么要使用PUT?通常,PUT用于更改已知资源的服务器端状态。如果您可以通过补充URI来寻址资源,则可以使用此URI来获取它的表示。您还可以使用资源的新表示来PUT到此URL。
如果ID由服务器控制,PUT也用于创建新资源。请求
PUT /foo/123
可以用来
/foo/123
或/foo/123
。这与通常在集合资源上请求的POST不同。
POST /foo/
表示新资源会导致服务器为新资源分配ID。然后服务器将返回如下响应:
201 Created
Location: /foo/456
答案 1 :(得分:2)
Apache CXF http-binding page上有一个@PUT
示例。
为什么要使用PUT?好吧,在RESTful应用程序中,您可能希望例如为实体实现添加/编辑功能,例如MyEntity
。
现在,添加会在/myApplication/myEntity
方法上的POST
之类的链接上进行,而编辑将在/myApplication/myEntity/id
上进行,但在PUT
上进行。 GET
请求也会发送到上一个链接/myApplication/myEntity/id
,同样适用于DELETE
。
您基本上以标准,直接的方式为MyEntity
提供CRUD操作支持。当然,您可以通过PUT
执行DELETE
和POST
操作,这也可以。
您可以阅读有关RESTful网络服务here的更多信息,以及PUT vs POST here上的更多内容。