Java 将@PathParams与PUT REST Api一起使用
我正在创建一个REST服务,我有以下API-Java 将@PathParams与PUT REST Api一起使用,java,rest,put,Java,Rest,Put,我正在创建一个REST服务,我有以下API- @PUT @Path("/delete/{teamName}") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN) public Response delete(@PathParam("teamName")String teamName) { if (db.delete(teamName)) {
@PUT
@Path("/delete/{teamName}")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.TEXT_PLAIN)
public Response delete(@PathParam("teamName")String teamName) {
if (db.delete(teamName)) {
return Response.status(200).build();
}
return Response.status(400).build();
}
此API接受PathParam
以delete
团队名称。这是一个PUT
调用。
我的问题是——
@PathParams
是否是一种好的做法在任何类型的RESTful API资源处理程序中都可以使用
PathParam
。但是,PUT方法不适合这里,因为它违反了基本的REST原则
REST假设特定的HTTP方法(如PUT、GET、DELETE、POST)对应于需要对数据执行的特定操作。
例如,如果要检索数据,需要使用GET,而删除是删除数据所需的
在你的特殊情况下,我会选择
DELETE /teams/{teamName}
我建议你至少承认自己对基本REST原则有了更好的理解。1。在PUT调用中使用PathParam是可以的。2.对于删除操作,应使用带PathParam的DELETE,而不是PUT。3.您不应该在路径中使用诸如“delete”之类的动词。4.这取决于teamName是否是唯一标识符-如果是,那么就可以了,如果不是-您应该在Pathparam中使用id。是的,大多数情况下您应该(会),因为PUT意味着存在一个资源,通常具有唯一标识符。
@PathParam
表示标识符是可变的。@使用
注释指定服务器希望在请求正文中(即不在URL或查询参数中)使用哪种类型的数据。如果您的端点只需要@PathParam
,那么您就不需要@消费
,因为您并没有读取正文中的任何内容。