有時候在送API請求時,會遇到明明是GET還會帶上Body要填。
@GET("api/getBody")
fun sendGetBody(
@Body body: DataModel.sendGetBodyData
): Call<Void>
開心地送出編譯,然後就紅字ERROR了。
java.lang.IllegalArgumentException: Non-body HTTP method cannot contain @Body.
唔? 這不對吧。
這時候,想起Get請求時是可以有帶參數的用法,那就大膽的來試試。
上網查個資料發現有@Path跟@Query可以用。
@Path
當請求的網址,變數在路徑上
http://123567.com/api/News/{id}
這時候就是用@Path的時機了。
@GET("News/{Id}")
fun getNews(@Path("Id") newsId:String)
:Call<Void>
@Query
當請求的網址,變數在問號後面
http://123567.com/api/News?id=123
@GET("News/")
fun getNews(@Query("id") id:Int)
:Call<Void>
果然使用@Query後,就可以執行了。