Retrofit2のAPI定義はスラッシュで始めない
retrofitを使用してAPIを叩く際、
import retrofit2.Call
import retrofit2.http.GET
public interface MyApi {
@GET("endpoint/example")
public abstract fun exampleGet(): Call<ExampleResponse>
// ExampleResponseはどこかで定義されているものとする
}
とかするわけなんですが、この @GET
に与えるパスの先頭に /
をつけてはいけない。
そうするとHTTP Status Code 404を吐かれてしまう。
代わりに、 retrofit2.Retrofit.Builder()
の baseUrl
に渡すURLの末尾に /
をつける。
// ダメ
@GET("/endpoint/example")
public abstract fun exampleGet(): Call<ExampleResponse>
// OK
@GET("endpoint/example")
public abstract fun exampleGet(): Call<ExampleResponse>
おまけ: baseUrlにslashなし&API宣言にslashありは動かない
最終的に同じになりそうだから試してみたが、エラーが出て駄目でした。 baseUrlはslashで終わらないといけないらしい。
java.lang.IllegalArgumentException: baseUrl must end in /: https://misskey.io/api