区别:java
(1)@Get 通常用于查询或获取资源信息, @Post通常是用于更新资源信息。url
(2)Url不一样,spa
@Get 请求的url:rest
http://localhost:8080/imeter-cms/rest/device/queryDevice?serialNo=1&type=1code
它会把参数这样拼接,对象
@Post请求的url:http://localhost:8080/imeter-cms/rest/device/queryDeviceblog
因此从@Get和@Post在url上的区别,若是后代代码这样写的话(参数接收的是一个对象,如(代码1))资源
用@Get 就会出现http请求异常。class
(代码1)后台
@GET
@Path("/queryDevice")
@Consumes(MediaType.APPLICATION_JSON)
public List<DeviceDTO> query(DeviceDTO dto) {
//这里写一些操做
return null;
}
解决方式:
(1)若是依然要用@Get请求,能够将代码参数改为这样:
(代码2)
@GET @Path("/queryDevice") @Consumes(MediaType.APPLICATION_JSON) public List<DeviceDTO> query(@QueryParam("serialNo") Long serialNo, @QueryParam("type") String type, @QueryParam("address") String address, @QueryParam("user") String user ) { //这里写一些操做 return null; }
解决方式:
(2)若是依然要用对象做为参数,将@Get改为@Post请求,
(代码3)
@POST
@Path("/queryDevice")
@Consumes(MediaType.APPLICATION_JSON)
public List<DeviceDTO> query(DeviceDTO dto) {
//这里写一些操做
return null;
}
简而言之,后台@Get请求不能接收一个对象做为参数时, 能够考虑这两种解决办法:
(1) 若是依然要用@Get,那就将接受的参数改成(代码2)的形式.
(2) 将@Get请求改成@Post请求,如(代码3).