Android-Retrofitリクエスト注記分析
Androidリクエスト方式はPOST、PUT、DELETE、HEADにほかならない.Retrofitの注釈:1.GET———資源を探す(調べる).POST―――修正資源(修正)3.PUT———ファイルをアップロード(増加)4.DELETE—-ファイルを削除(削除)5.HEAD―――ページのヘッダのみを要求する
@QueryMap、@Path、@Body、@FormUrlEncoded/@Field、@Header/@Headers.彼らの違いを見てみましょう
@Query(GETリクエスト):
urlの後にパラメータを接続するには、次のようにします.
次のようになります.
もちろん、パラメータが多い場合は、次のようにMapに配置できます.
urlのフィールドを置換するには、次のようにします.
このようなリクエストインタフェースのようにgroupとuserの間に不確定なid値が入力される必要がある場合、この方法でよい.所定の値フィールドを{}で囲みます.もちろん{}の名前はidとは限りません.任意に取ることができますが、@Path後括弧の名前と同じにする必要があります.userの後にパラメータを入力する必要がある場合は、次のようにQueryで接続できます.
このメソッドを呼び出すと、groupIdが1に転送され、sortが「2」に転送されると仮定すると、urlがgroup/1/usersに結合されますか?sort=2で、もちろん最後にお願いすると前のbaseUrlも付きます.
@Body(POSTリクエスト):
HTTPリクエストボディとしてオブジェクトを指定できます.たとえば、次のようにします.
私たちが入力したUserエンティティクラスを転送用のHTTPリクエストボディに変換し、ネットワークリクエストを行います.
@Field(POSTリクエスト):
フォームデータを転送するには、次の手順に従います.
注意冒頭に@FormUrlEncodedという注釈を多く付けなければなりません.そうしないと、エラーが発生します.フォームには当然、複数のキー値ペアが構成されています.ここでfirst_nameはキーであり,具体的に入力されるfirstは値である.
@Header/@Headers(POSTリクエスト):
要求ヘッダを追加するには、次の手順に従います.
頭のAuthorizationプロパティを入力するauthorizationに設定することを示します.もちろん@Headersで表すこともできますが、役割は同じです.例えば、
もちろん、複数の設定ができます.
では、上記のRetrofitServiceインタフェースクラスの説明の差は多くありません.
原文アドレスはあなたに一歩一歩MVP+Retrofit+RxJavaネットワーク要求フレームワークを構築することを教えます
@QueryMap、@Path、@Body、@FormUrlEncoded/@Field、@Header/@Headers.彼らの違いを見てみましょう
@Query(GETリクエスト):
urlの後にパラメータを接続するには、次のようにします.
@GET("book/search")
Call getSearchBook(@Query("q") String name); //name
次のようになります.
@GET("book/search?q=name")
Call getSearchBook() ;
@QueryMap(GET ):
もちろん、パラメータが多い場合は、次のようにMapに配置できます.
@GET("book/search")
Call getSearchBook(@QueryMap Map<String, String> options);
@Path(GET ):
urlのフィールドを置換するには、次のようにします.
@GET("group/{id}/users")
Call groupList(@Path("id") int groupId) ;
このようなリクエストインタフェースのようにgroupとuserの間に不確定なid値が入力される必要がある場合、この方法でよい.所定の値フィールドを{}で囲みます.もちろん{}の名前はidとは限りません.任意に取ることができますが、@Path後括弧の名前と同じにする必要があります.userの後にパラメータを入力する必要がある場合は、次のようにQueryで接続できます.
@GET("group/{id}/users")
Call groupList(@Path("id") int groupId,@Query("sort") String sort);
このメソッドを呼び出すと、groupIdが1に転送され、sortが「2」に転送されると仮定すると、urlがgroup/1/usersに結合されますか?sort=2で、もちろん最後にお願いすると前のbaseUrlも付きます.
@Body(POSTリクエスト):
HTTPリクエストボディとしてオブジェクトを指定できます.たとえば、次のようにします.
@POST("users/new")
Call<User> createUser(@Body User user);
私たちが入力したUserエンティティクラスを転送用のHTTPリクエストボディに変換し、ネットワークリクエストを行います.
@Field(POSTリクエスト):
フォームデータを転送するには、次の手順に従います.
@FormUrlEncoded
@POST("user/edit")
Call updateUser(@Field("first_name") String first, @Field("last_name") String last) ;
注意冒頭に@FormUrlEncodedという注釈を多く付けなければなりません.そうしないと、エラーが発生します.フォームには当然、複数のキー値ペアが構成されています.ここでfirst_nameはキーであり,具体的に入力されるfirstは値である.
@Header/@Headers(POSTリクエスト):
要求ヘッダを追加するには、次の手順に従います.
@GET("user")
Call getUser(@Header("Authorization") String authorization)
頭のAuthorizationプロパティを入力するauthorizationに設定することを示します.もちろん@Headersで表すこともできますが、役割は同じです.例えば、
@Headers("Cache-Control: max-age=640000")
@GET("user")
Call<User> getUser()
もちろん、複数の設定ができます.
@Headers({
"Accept: application/vnd.github.v3.full+json",
"User-Agent: Retrofit-Sample-App"
})
@GET("user")
Call getUser()
では、上記のRetrofitServiceインタフェースクラスの説明の差は多くありません.
原文アドレスはあなたに一歩一歩MVP+Retrofit+RxJavaネットワーク要求フレームワークを構築することを教えます