본문 바로가기
개발/IntelliJ

[http client] IntelliJ .http로 간단히 API 테스트 하는 방법#1

by 궁즉변 변즉통 통즉구 2024. 9. 15.
반응형

 

IntelliJ IDEA는 다양한 기능을 통해 개발자들이 HTTP 요청을 테스트하고 디버깅할 수 있도록 도와준다. 특히 REST API 개발에서 HTTP 요청을 빠르게 테스트하는 것이 중요한데, IntelliJ에서는 HTTP Client라는 강력한 도구를 제공하는데, 사용하는 방법도 직관적이고 간단하다. IntelliJ에서 HTTP Client로 API 테스트 하는 방법에 대해서 알아본다.

 

1. HTTP Client 설정

IntelliJ에는 내장된 HTTP Client가 있어, 별도의 플러그인 설치 없이도 HTTP 사용이 가능하다. HTTP Client는 .http 파일을 생성하여 사용한다. 만약에 없는 경우 IntelliJ 플러그인에서 http로 검색을 해서 설치한다. 

 

2. 기본 요청 테스트

먼저 .http 파일을 생성한다. 필자는 test 패키지 하위에 api-test.http 파일을 생성해줬다. 파일은 어느 위치에 생성하던지 무관하다. 

 

생성된 파일을 클릭해서 열어보면 좌측 상단에 '+' 아이콘이 있는데 클릭하면 자주 사용되는 GET, POST 등 API 테스트 작성에 대한 코드 템플릿을 제공해준다. GET부터 클릭 하면서 하나씩 작성해본다

 

필자는 아래와 같이 GET, POST, PUT, DELETE 샘플 API를 하나씩 작성해줬다.

###
### GET 요청 테스트
GET https://jsonplaceholder.typicode.com/posts/1
Accept: application/json
Authorization: Bearer 999999

### POST 요청 테스트
POST https://jsonplaceholder.typicode.com/posts
Content-Type: application/json

{
  "title": "foo",
  "body": "bar",
  "userId": 1
}

### PUT 요청 테스트
PUT https://jsonplaceholder.typicode.com/posts/1
Content-Type: application/json

{
  "id": 1,
  "title": "foo",
  "body": "bar",
  "userId": 1
}

### DELETE 요청 테스트
DELETE https://jsonplaceholder.typicode.com/posts/1

 

 

위와 같이 작성하고 테스트를 실행해본다. 아래는 API 테스트를 실행해본 샘플 화면이다. Request, Response에 대한 내용을 실행 콘솔을 통해서 확인 가능하다. 

 

 

3. 환경변수 설정

profile(dev, qa, prd 등) 별로 달라져야 하는 내용은 환경변수 파일을 별도로 생성하여 관리가 가능하다. http파일 상단의 "Run with: " 부분을 클릭하고 'Add Environment to Public File...'을 클릭한다. 아래에 Private File이라는 것도 있는데 Public, Private 파일은 환경변수 용도에 따라서 사용을 하면 된다. Public File은 일반적인 환경변수, Private 파일은 계정정보, 토큰 등의 민감정보를 관리하고 git형상관리에서 제외 되도록 해주면 된다. 일단은 Public File로 생성해서 테스트 해보자. 

 

아래와 같이 http-client.env.json 파일이 생성되는데 이 파일에서 환경 변수를 관리해주면 된다. 

 

환경변수 관리 예시는 아래와 같다. 

 

이제 환경변수를 적용해보자. "Run with: " 에서 실행하고자 하는 환경 Profile을 선택하고 실행하면 된다. 

 

4. 테스트 검증(assert)

API를 호출하고 결과를 콘솔로 보는 방법도 있지만 assert를 사용해서 검증을 하는게 정확하다. assert 적용 샘플은 아래와 같다. assert메소드를 이용해서 response의 내용을 검증한다. API response에 어떤 내용들이 있는지는 client.log()를 사용해서 확인해보면 된다. 

### GET 요청 및 응답 검증
GET https://jsonplaceholder.typicode.com/posts/1
Accept: application/json

> {%
    client.test("응답 상태 코드 확인", function() {
        client.assert(response.status === 200, "상태 코드가 200이어야 합니다.");
    });

    client.test("응답 본문 확인", function() {
        client.log(response);
        client.assert(response.body.id === 1, "ID가 1이어야 합니다.");
    });

    client.test("응답 content-type json", function() {
        const type = response.contentType.mimeType;
        client.assert(type === "application/json", "Content-Type는 'application/json'이어야 합니다.");
    });
%}

 

5. 요청 체인(Request Chain)

이전 API 요청의 응답을 다음 API 요청에서 활용할 수 있다. 토큰 등을 받아와서 다음 요청부터 사용해야 될 경우 등에 해당할 수 있을 것이다. 샘플 예시는 아래와 같다. 첫번째 요청의 id값을 'postId'라는 글로벌 변수로 등록하고, 이를 두번째 API 테스트에서 활용한다. 

### 첫 번째 요청
POST https://jsonplaceholder.typicode.com/posts
Content-Type: application/json

{
  "title": "foo",
  "body": "bar",
  "userId": 1
}

> {%
    client.test("Created Post", function() {
        client.log(response);
        client.global.set("postId", response.body.id);
    });
%}

### 두 번째 요청
GET https://jsonplaceholder.typicode.com/posts/{{postId}}
Accept: application/json

 

6. 동적 변수(Dynamic Value)

http client에서는 다양한 동적 변수 생성을 지원해준다. 어떤 것들이 있는 확인해보고 필요한 것들을 활용하면 된다. 아래 샘플에서는 동적변수들의 내용들을 콘솔로 출력해보고, uuid, alphabetic을 API테스트에서 활용을 한다. 

### POST 요청 테스트

< {%
    client.log("$uuid: ", $uuid);
    client.log("$timestamp: ", $timestamp);
    client.log("$randomInt: ", $randomInt);
    client.log("$random.integer(from, to): ", $random.integer(1, 100));
    client.log("$random.float(from, to): ", $random.float(1.0, 100.0));
    client.log("$random.alphabetic(length): ", $random.alphabetic(10));
    client.log("$random.alphanumeric(length): ", $random.alphanumeric(10));
    client.log("$random.hexadecimal(length): ", $random.hexadecimal(10));
    client.log("$random.email: ", $random.email);
    client.log("$exampleServer: ", $exampleServer);

    request.variables.set("userId", $uuid);
    request.variables.set("body", $random.alphabetic(10))
%}

POST https://jsonplaceholder.typicode.com/posts
Content-Type: application/json

{
  "title": "foo",
  "body": "{{ body }}",
  "userId": "{{ userId }}"
}

 

 

 

참고:

 

[http client] IntelliJ .http로 간단히 API 테스트 하는 방법#2

이번에는 IntelliJ에서 API를 테스트하는 방법 중 Spring Controller 소스 기반으로 http client를 생성하는 방법과 IntelliJ Endpoint를 사용하여 http client를 생성하는 방법을 알아본다. 지난번 내용은 아래를

happy-jjang-a.tistory.com

 

HTTP Client | IntelliJ IDEA

 

www.jetbrains.com

 

 

반응형

댓글