具有多个参数的JAX-RS Put方法

时间:2016-08-23 11:46:55

标签: java rest jax-rs

这是我的JAX-RS Put方法。我在这里使用了多个参数。

@Path("/Add")
public class AddJSONService {
    @PUT
    @Path("/deactivateAdd/{idAdd}/{activeStatus}")
    @Consumes(MediaType.APPLICATION_JSON)
    public void deactivateAdd(@PathParam("idAdd") int idAdd, @PathParam("activeStatus") boolean activeStatus) {

        AddInterface addInterface = new AddTable();
        addInterface.deactivateAdd(idAdd, activeStatus);
    }

}

当我运行此方法时,浏览器会给我发送以下消息。

HTTP状态405 - 不允许的方法

对此有什么想法吗?

更新 - idAlergy到idAdd。

3 个答案:

答案 0 :(得分:3)

除非您使用自定义浏览器插件,例如邮递员,当您输入URL时,浏览器将始终执行HTTP GET。您的方法被指定为仅接受PUT请求,因此请求被拒绝。

答案 1 :(得分:0)

@PathParam应与路径参数匹配。 idAllergy - > idAdd

public void deactivateAdd(@PathParam("idAdd") int idSomething, @PathParam("activeStatus") boolean activeStatus)

答案 2 :(得分:0)

我认为你在idAdd参数中犯了一个错误。

你可以尝试:

@Path("/Add")
public class AddJSONService {
    @PUT
    @Path("/deactivateAdd/{idAdd}/{activeStatus}")
    @Consumes(MediaType.APPLICATION_JSON)
    public void deactivateAdd(@PathParam("idAdd") int idAdd, @PathParam("activeStatus") boolean activeStatus) {

        AddInterface addInterface = new AddTable();
        addInterface.deactivateAdd(idAdd, activeStatus);
    }

}

更新:为什么在Web服务中使用PUT而不是POST注释?如果我理解得很好,你在浏览器中没有做PUT,那不是吗?