區別: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).