1.rest之@Get和@Post請求的區別:

區別:java

(1)@Get 通常用於查詢或獲取資源信息, @Post通常是用於更新資源信息。url

(2)Url不一樣,spa

@Get 請求的urlrest

http://localhost:8080/imeter-cms/rest/device/queryDevice?serialNo=1&type=1code

它會把參數這樣拼接,對象

@Post請求的urlhttp://localhost:8080/imeter-cms/rest/device/queryDeviceblog

 

因此從@Get@Posturl上的區別,若是後代代碼這樣寫的話(參數接收的是一個對象,如(代碼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.

相關文章
相關標籤/搜索