我有使用@PUT@POST批注的方法。没有这些注释,这些方法会很好地工作。那么这些注释有什么需要?

@GET
@Path ("/{stockId}")
@Produces("application/xml")
public StockDetail search(@PathParam("stockId") Integer stockId) {

    final String methodName="search";
    mLogger.debug(mClassName+"::" +methodName+"::Entered");
    StockDetail stockDetails=null;
    try {

         stockDetails = mStockBean.retrieve(stockId);
    } catch(Exception exception) {

        mLogger.error("ClassName::" +mClassName+ "MethodName::" +methodName+"Error::"+exception.getMessage());
    }
    return stockDetails;
}

最佳答案

好的,这些注释使您例如可以为不同的方法使用相同的路径:

@GET
@Path ("/{stockId}")
@Produces("application/xml")


@PUT
@Path ("/{stockId}")
@Consumes("application/xml")

在这里,在同一路径之前,我们将拥有不同类型的请求。

UPD。根据评论,我将注意到,如果我们有方法A(),并将其用于具有上面声明的Web服务签名的@GET,则我们将其使用时不带任何参数(因为它不消耗任何请求主体)。对于第二个,我们将使用A(String body)方法,因为我们消耗了一些要处理的实体。

10-06 13:37