IDE/IntelliJ

[IntelliJ] OkHttp 연결 및 사용 방법 [Java Rest API]

블로그 주인장 2023. 9. 23.

OkHttp 란?

- Rest API로, HTTP 통신을 간편하게 사용할 수 있도록 만들어진 자바 라이브러리이다.

- "Square"라는 회사에서 만든 라이브러리로 몇 줄의 코드로 Rest API, HTTP 기반의 요청 및 응답 처리가 가능하다.

 

- OkHttp 라이브러리는 오픈소스로 공개된 소프트웨어이다 (링크 : OkHttp Github)

- 문제가 생기거나 내부 동작이 궁금한 경우 코드를 열어볼 수 있다.


OkHttp 사용하기 | 메이븐(Maven) 설정

- OkHttp 라이브러리를 메이븐(Maven)에서 사용하기 위해서는 Dependencies 설정이 필요하다.

<dependency>
    <groupId>com.squareup.okhttp</groupId>
    <artifactId>okhttp</artifactId>
    <version>2.7.5</version>
</dependency>

- Maven 이외의 그래들(Gradle) 같은 빌드 도구를 이용 및 버전을 확인하고 싶다면 해당 링크 를 참조하여 버전 확인 및 다운로드를 진행하면 된다.


OkHttp Rest API 설정 | 인텔리제이(Intellj)

 1. 본인의 프로젝트에 있는 pom.xml 파일을 open 한다.

 2. 맨 아래로 스크롤을 내리면 <dependency> 위치를 파악한다.

 3. 아까전에 Okhttp 사용을 복사했던, dependency를 복사한다.

 

 4. 프로젝트에 오른쪽 마우스 버튼을 누른다.

 5. maven -> Reload project를 눌러서 추가했던, dependency 를 업데이트를 진행해준다.

 6. 업데이트를 진행하면, 새로 추가한 Rest API를 사용할 수 있다.


OkHttp 기본 틀 예제 | GET, HEAD, DELETE

    public boolean getUserInfo(String key) {

        try {
            String url = "http://127.0.0.1:8080/v1/test/get?key=" + key;

            OkHttpClient client = new OkHttpClient();	//객체 생성

            Request.Builder builder = new Request.Builder().url(url).get(); //응답 요청
            builder.addHeader("password", "BlahBlah");

            Response response = client.newCall(request).execute();	//응답 확인

            if (response.isSuccessful()) {
                ResponseBody body = response.body();
                if (body != null) {
                    System.out.println("Response:" + body.string());
                }
            }
            else {
                System.err.println("Error Occurred");
            }
            
            return true;
            
        } catch(Exception e) {
            e.printStackTrace();
        }

        return false;
    }

 1.  OkHttp 요청을 전송할 OkHttpClient 객체를 생성한다.

 2.  GET 요청을 Request.Builder 를 통해 만든다. 이 때, REST API 요청을 전송할 URL과 get() 메소드를 사용하여 GET 요청임을 명시한다.

 3. client 객체의 newCall() 메소드에 만들어진 Request를 전달하고, execute() 메소드를 실행 ( execute() 메소드는 요청에 대한 응답이 올때까지 기다렸다가 반환)

 4. 요청에 대한 응답이 오면 Response 객체를 반환받는다. 

 5.  Response 객체에는 요청에 대한 바디(Body) 정보가 담겨 있으며, 요청이 실패했을 경우 에러 코드 등이 담겨있다.

 6. HEAD 요청과, DELETE 요청은 기본적으로 GET 요청과 동일하게 처리된다. 다만 Request.Builder 에서 get() 메소드 대신 head() 혹은 delete() 메소드로 바꾸기만 하면된다. 


OkHttp 기본 틀 예제 | POST, PUT

    public boolean postUserInfo() {

        try {
            String url = "http://127.0.0.1:8080/v1/test/post";
            String postBody = "" + "{" + "\"key\":123," + "\"value\":55323" + "}";

            OkHttpClient client = new OkHttpClient();
            RequestBody requestBody = RequestBody.create(
                    MediaType.parse("application/json; charset=utf-8"), postBody);

            Request.Builder builder = new Request.Builder().url(url)
                    .addHeader("Password", "BlahBlah")
                    .post(requestBody);
            Request request = builder.build();

            Response response = client.newCall(request).execute();
            if (response.isSuccessful()) {
                ResponseBody body = response.body();
                if (body != null) {
                    System.out.println("Response:" + body.string());
                }
            } else
                System.err.println("Error Occurred");

            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }

        return false;
    }

 1. 기본적으로 GET 요청을 구현했던 코드와 비슷하다. 다만 RequestBody 객체에 전달할 Body의 내용과 컨텐츠 타입(JSon)이 추가되었다. 

 2. PUT 요청도 POST 요청처럼 RequestBody body = RequestBody.create() 요청으로 body를 만들어서 request builder의 put() 메소드의 인자로 주면된다.

반응형

'IDE > IntelliJ' 카테고리의 다른 글

[IntelliJ] Can't rename root module  (1) 2023.10.27
[IDE] 자바 JDK 설치 및 인텔리제이 설정  (0) 2023.10.18
out 내장 객체 & Intellj 설정  (0) 2023.09.24

댓글