区别:
(1)@Get 一般用于查询或获取资源信息, @Post一般是用于更新资源信息。
(2)Url不同,
@Get 请求的url:
http://localhost:8080/imeter-cms/rest/device/queryDevice?serialNo=1&type=1
它会把参数这样拼接,
@Post请求的url:http://localhost:8080/imeter-cms/rest/device/queryDevice
所以从@Get和@Post在url上的区别,如果后代代码这样写的话(参数接收的是一个对象,如(代码1))
用@Get 就会出现http请求异常。
(代码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).