我不是REST体系结构方面的专家,我正在阅读教程。我对理解http方法的作用感到困惑。我了解的是,根据教程,有四种HTTP方法GET,POST,PUT,DELETE,它可以完成以下工作。
GET->只读操作 POST->创建资源 PUT->更新资源 DELETE->删除资源
我对这里的疑问是,我可以编写一个通过注释@POST而不是@DELETE删除资源的代码吗? 我没有在应用程序中使用@PUT和@DELETE,而是仅使用@POST来执行此操作? 使用@PUT和@DELETE是否真的必须执行?如果我不使用它会有什么后果?
@POST
@Path("/{empNo}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public void deleteEmployee(@PathParam("empNo") String empNo) {
EmployeeDAO.deleteEmployee(empNo);
}
答案 0 :(得分:0)
在Roy Fielding关于REST的论文中,他只提到了统一接口。
以便您可以根据需要定义统一界面。
POST->删除资源没问题
POST->更新资源正常。
但是,如果您想使自己的api更清晰并遵循HTTP标准。
-POST->创建新对象
-PUT->更新对象
-DELETE->删除对象
答案 1 :(得分:0)
@GET : to get information
@POST : to save information
@PUT : to update Information
@DELETE : to delete information
上面的描述只是一个全球通用的约定。
以您的示例
理想情况下应该是
@DELETE
@Path("/{empNo}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public void deleteEmployee(@PathParam("empNo") String empNo) {
EmployeeDAO.deleteEmployee(empNo);
}
但这也是完全有效的
@POST
@Path("/{empNo}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public void deleteEmployee(@PathParam("empNo") String empNo) {
EmployeeDAO.deleteEmployee(empNo);
}
唯一的收获是其不可预测 API。开始时可能会造成混淆。
让我们说一个新人需要处理Delete Employee。
他要做的第一件事是寻找@DELETE
答案 2 :(得分:0)
我们可以使用任何方法来完成任何工作。
这意味着
@GET
can create new element, can get any element, can update and also delete
@POST
can create new element, can get any element, can update and also delete
@PUT
can create new element, can get any element, can update and also delete
@DELETE
can create new element, can get any element, can update and also delete
这些方法通常定义如何根据请求发送数据以及可以发送的数据限制
@GET
only query string, which is browser URL with ?key1=value1&key2=value2...., Most webservers have a limit of 8192 bytes (8KB)
@POST
can send query string data(not preferred), data is sent in the request payload instead of in the URI. Default to 2MB.
@PUT
same as POST
@DELETE
same as GET
如果查看Gmail
,Facebook
LinkedIn
个其他站点,它们都使用POST
方法来获取新邮件,消息,更新,通知和其他内容...
使用REST命名约定是为了帮助用户和新开发人员了解API的功能。
在阅读GET
时,它将帮助用户知道API将会做什么。对于POST
,PUT
和DELETE
同样。为了易于理解REST,请定义要遵循的某些准则。没必要,很好。