{"id":3772,"date":"2021-11-06T16:27:58","date_gmt":"2021-11-06T07:27:58","guid":{"rendered":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=3772"},"modified":"2021-11-06T16:30:09","modified_gmt":"2021-11-06T07:30:09","slug":"retrofit2-%ec%84%a4%ec%a0%95%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=3772","title":{"rendered":"retrofit2 \uc124\uc815\ud558\uae30"},"content":{"rendered":"<h1>retrofit2 \uc124\uc815\ud558\uae30<\/h1>\n<p>\uac04\ub2e8\ud788 retrofit2 \ub97c \uc774\uc6a9\ud574 API \uc11c\ubc84\uc5d0\uc11c \ub370\uc774\ud0c0\ub97c \uac00\uc838\uc62c \uc218 \uc788\ub2e4.<\/p>\n<p>\ube44\ub3d9\uae30\ucc98\ub9ac\ub3c4 \ub3d9\uc2dc\uc5d0 \ud574\uc8fc\ubbc0\ub85c \ud3b8\ud558\uac8c \ucf54\ub529\ud560 \uc218 \uc788\ub2e4.<\/p>\n<h2>\uc0d8\ud50c json \ud30c\uc77c<\/h2>\n<p>\uc11c\ubc84\uc5d0\uc11c \ub118\uaca8\ubc1b\ub294 \uc0d8\ud50c json \ub370\uc774\ud0c0\ub294 \uc544\ub798\uc640 \uac19\ub2e4.<\/p>\n<pre><code class=\"language-json\">{\n  &quot;code&quot;: &quot;000&quot;,\n  &quot;message&quot;: &quot;OK&quot;,\n  &quot;data&quot;: [\n    {\n      &quot;id&quot;: 2,\n      &quot;search_string&quot;: &quot;\uae40\uce58\ucc0c\uac1c&quot;\n    },\n    {\n      &quot;id&quot;: 3,\n      &quot;search_string&quot;: &quot;\ubd80\ub300\uae40\uce58\ucc0c\uac1c&quot;\n    },\n    {\n      &quot;id&quot;: 1,\n      &quot;search_string&quot;: &quot;\uae40\uce58&quot;\n    }\n  ],\n  &quot;paging&quot;: {\n    &quot;pageNo&quot;: 0,\n    &quot;pageSize&quot;: 5,\n    &quot;resultCount&quot;: 3,\n    &quot;totalCount&quot;: 3,\n    &quot;totalPages&quot;: 1,\n    &quot;first&quot;: true,\n    &quot;last&quot;: true\n  }\n}<\/code><\/pre>\n<h2>DTO \ud074\ub798\uc2a4 \uc0dd\uc131<\/h2>\n<pre><code class=\"language-java\">public class AutoCompleteItem {\n\n    int id;\n\n    \/\/ \ud544\ub4dc\uba85\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc73c\uba74 \uc9c0\uc815\ud574 \uc904 \uc218 \uc788\ub2e4.\n    @SerializedName(&quot;search_string&quot;)\n    String searchString;\n\n    \/\/ Getter()\n}<\/code><\/pre>\n<pre><code class=\"language-java\">public class Paging {\n\n    int pageNo;\n    int pageSize;\n    int resultCount;\n    int totalCount;\n    int totalPages;\n    boolean first;\n    boolean last;\n\n    \/\/ Getter()\n}<\/code><\/pre>\n<pre><code class=\"language-java\">public class AutoCompleteResponse {\n\n    String code;\n    String message;\n    List&lt;AutoCompleteItem&gt; data;\n    Paging paging;\n\n    \/\/ Getter()\n}<\/code><\/pre>\n<h2>Client \uc0dd\uc131<\/h2>\n<p>\ub514\ubc84\uae45\uc774 \ud544\uc694\ud55c \uacbd\uc6b0, \ucf54\ub9e8\ud2b8 \uce5c \ubd80\ubd84\uc744 \ud574\uc81c\ud574\uc11c \ub85c\uadf8\ub97c \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre><code class=\"language-java\">public class MGApiClient {\n\n    private static final String BASE_URL = &quot;https:\/\/&lt;API \uc11c\ubc84 \uc544\uc774\ud53c&gt;\/&quot;;\n    private static Retrofit retrofit;\n\n    public static Retrofit getApiClient() {\n\/\/        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();\n\/\/        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);\n\/\/        OkHttpClient client = new OkHttpClient.Builder()\n\/\/                .addInterceptor(new Interceptor() {\n\/\/                    @Override\n\/\/                    public okhttp3.Response intercept(Chain chain) throws\n\/\/                            IOException {\n\/\/                        Request request = chain.request().newBuilder()\n\/\/                                .addHeader(&quot;key&quot;, &quot;value&quot;)\n\/\/                                .addHeader(&quot;HEADER&quot;,&quot;HEADER Value&quot;)\n\/\/                                .build();\n\/\/                        return chain.proceed(request);\n\/\/                    }\n\/\/\n\/\/\n\/\/                })\n\/\/                .addInterceptor(interceptor)\n\/\/                .build();\n\n        if(retrofit == null){\n            retrofit = new Retrofit.Builder()\n                    .baseUrl(BASE_URL)\n\/\/                    .client(client)                                         \/\/ Logging\n                    .addConverterFactory(GsonConverterFactory.create())\n                    .build();\n        }\n        return  retrofit;\n    }\n}<\/code><\/pre>\n<h2>\uc778\ud130\ud398\uc774\uc2a4 \uc0dd\uc131<\/h2>\n<p>\ud5e4\ub354\uc640 \ud30c\ub77c\ubbf8\ud130\ub97c \uc9c0\uc815\ud574 \uc904 \uc218 \uc788\ub2e4.<\/p>\n<pre><code class=\"language-java\">public interface MGApiInterface {\n\n    @GET(&quot;v1\/esautocomplete\/&quot;)\n    Call&lt;AutoCompleteResponse&gt; getAutoComplete(\n            @Header(&quot;Authorization&quot;) String token,\n            @Query(&quot;q&quot;) String query,\n            @Query(&quot;s&quot;) int size,\n            @Query(&quot;p&quot;) int page\n    );\n}<\/code><\/pre>\n<h2>\uc2e4\ud589\ud558\uae30<\/h2>\n<pre><code class=\"language-java\">        MGApiInterface apiInterface = MGApiClient.getApiClient().create(MGApiInterface.class);\n\n        Call&lt;AutoCompleteResponse&gt; call = apiInterface.getAutoComplete(\n                getString(R.string.mgapi_key),\n                &quot;\u3131&quot;,\n                5,\n                0);\n        call.enqueue(new Callback&lt;AutoCompleteResponse&gt;() {\n            @Override\n            public void onResponse(@NotNull Call&lt;AutoCompleteResponse&gt; call, @NotNull Response&lt;AutoCompleteResponse&gt; response) {\n\n                assert response.body() != null;\n                AutoCompleteResponse autoCompleteResponse = response.body();\n\n                for (AutoCompleteItem item : autoCompleteResponse.getData()) {\n                    Log.d(&quot;getKeyHash&quot;, item.getSearchString());\n                }\n            }\n\n            @Override\n            public void onFailure(@NotNull Call&lt;AutoCompleteResponse&gt; call, @NotNull Throwable t) {\n                Log.e(&quot;getKeyHash&quot;, t.getMessage());\n            }\n        });<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>retrofit2 \uc124\uc815\ud558\uae30 \uac04\ub2e8\ud788 retrofit2 \ub97c \uc774\uc6a9\ud574 API \uc11c\ubc84\uc5d0\uc11c \ub370\uc774\ud0c0\ub97c \uac00\uc838\uc62c \uc218 \uc788\ub2e4. \ube44\ub3d9\uae30\ucc98\ub9ac\ub3c4 \ub3d9\uc2dc\uc5d0 \ud574\uc8fc\ubbc0\ub85c \ud3b8\ud558\uac8c \ucf54\ub529\ud560 \uc218 \uc788\ub2e4. \uc0d8\ud50c json \ud30c\uc77c \uc11c\ubc84\uc5d0\uc11c \ub118\uaca8\ubc1b\ub294 \uc0d8\ud50c json \ub370\uc774\ud0c0\ub294 \uc544\ub798\uc640 \uac19\ub2e4. { &quot;code&quot;: &quot;000&quot;, &quot;message&quot;: &quot;OK&quot;, &quot;data&quot;: [ { &quot;id&quot;: 2, &quot;search_string&quot;: &quot;\uae40\uce58\ucc0c\uac1c&quot; }, { &quot;id&quot;: 3, &quot;search_string&quot;: &quot;\ubd80\ub300\uae40\uce58\ucc0c\uac1c&quot; }, { &quot;id&quot;: 1, &quot;search_string&quot;: &quot;\uae40\uce58&quot; } ],\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=3772\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32],"tags":[],"class_list":["post-3772","post","type-post","status-publish","format-standard","hentry","category-android"],"_links":{"self":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3772"}],"version-history":[{"count":2,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3772\/revisions"}],"predecessor-version":[{"id":3774,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3772\/revisions\/3774"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}