하이어코딩 RSS 태그 관리 글쓰기 방명록 mahiru
2025-07-10 19:44:42
728x90
반응형

🚀 들어가며

백엔드 개발자라면 누구나 한 번쯤 "API 테스트 어떻게 하지?"라는 고민을 해봤을 겁니다. 브라우저 주소창에 URL을 입력해서 GET 요청은 테스트할 수 있지만, POST나 PUT 요청은? 헤더는 어떻게 설정하고, 인증은 어떻게 처리하지? 이런 모든 고민을 해결해주는 도구가 바로 Postman입니다.

이 글에서는 Postman의 기초부터 실무에서 활용할 수 있는 고급 기능까지 차근차근 알아보겠습니다.

📑 목차

  1. Postman이란?
  2. 설치 및 초기 설정
  3. 첫 번째 API 요청 보내기
  4. HTTP 메소드별 사용법
  5. 환경 변수와 컬렉션
  6. 자동화 테스트
  7. 팀 협업 기능
  8. 실전 예제: Spring Boot API 테스트
  9. 꿀팁 모음

Postman이란?

Postman은 API 개발을 위한 협업 플랫폼입니다. 단순한 API 테스트 도구를 넘어서 API 설계, 문서화, 모니터링까지 가능한 올인원 솔루션이죠.

주요 기능

  • 🔧 API 테스트: 모든 HTTP 메소드 지원
  • 📁 컬렉션: API 요청을 그룹화하여 관리
  • 🌍 환경 변수: 개발/스테이징/프로덕션 환경 전환
  • 🤖 자동화: 테스트 스크립트 작성 및 실행
  • 👥 협업: 팀원과 API 문서 공유
  • 📊 모니터링: API 상태 실시간 확인

설치 및 초기 설정

1. Postman 다운로드

공식 웹사이트에서 운영체제에 맞는 버전을 다운로드합니다.

2. 계정 생성

무료 계정으로도 대부분의 기능을 사용할 수 있습니다.

3. 워크스페이스 생성

 
My Workspace > Create Workspace > "My First API" 입력

첫 번째 API 요청 보내기

1. 새 요청 생성

이미지 표시

  1. 좌측 사이드바에서 "+" 버튼 클릭
  2. Request 탭이 열립니다

2. 간단한 GET 요청

 
GET https://jsonplaceholder.typicode.com/users
  1. 메소드를 GET으로 선택
  2. URL 입력란에 위 주소 입력
  3. Send 버튼 클릭

3. 응답 확인

 
json
[
  {
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz"
  }
  // ...
]

HTTP 메소드별 사용법

📥 GET - 데이터 조회

 
http
GET http://localhost:8080/api/members

📤 POST - 데이터 생성

 
http
POST http://localhost:8080/api/members
Content-Type: application/json

{
  "name": "김한동",
  "email": "kim@handong.edu",
  "department": "전산전자공학부"
}

Postman 설정:

  1. Method: POST
  2. Headers 탭: Content-Type: application/json
  3. Body 탭: raw 선택 → JSON 선택

✏️ PUT - 데이터 수정

 
http
PUT http://localhost:8080/api/members/1
Content-Type: application/json

{
  "name": "김한동",
  "email": "kim.updated@handong.edu",
  "department": "AI융합교육원"
}

🗑️ DELETE - 데이터 삭제

 
http
DELETE http://localhost:8080/api/members/1

🔍 PATCH - 부분 수정

 
http
PATCH http://localhost:8080/api/members/1
Content-Type: application/json

{
  "email": "newemail@handong.edu"
}

환경 변수와 컬렉션

환경 변수 설정

환경별로 다른 URL을 관리할 때 유용합니다.

1. 환경 생성

 
⚙️ 환경 관리 > Add > "Local", "Production" 생성

2. 변수 설정

Local 환경:

 
base_url: http://localhost:8080
api_key: dev-key-12345

Production 환경:

 
base_url: https://api.myservice.com
api_key: prod-key-67890

3. 변수 사용

 
{{base_url}}/api/members

컬렉션 구조화

 
📁 Handong Media API
├── 📁 Authentication
│   ├── 🔐 Login
│   └── 🔓 Logout
├── 📁 Members
│   ├── 📥 Get All Members
│   ├── 📥 Get Member by ID
│   ├── 📤 Create Member
│   ├── ✏️ Update Member
│   └── 🗑️ Delete Member
├── 📁 Projects
│   └── ...
└── 📁 Events
    └── ...

자동화 테스트

Pre-request Script

요청 전에 실행되는 JavaScript 코드입니다.

 
javascript
// 현재 시간을 변수로 설정
pm.variables.set("timestamp", new Date().toISOString());

// 랜덤 이메일 생성
const randomEmail = `test${Math.random().toString(36).substring(7)}@example.com`;
pm.variables.set("randomEmail", randomEmail);

Tests 탭

응답 후 실행되는 테스트 코드입니다.

 
javascript
// 상태 코드 검증
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

// 응답 시간 검증
pm.test("Response time is less than 500ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(500);
});

// 응답 본문 검증
pm.test("Response has required fields", function () {
    const jsonData = pm.response.json();
    pm.expect(jsonData).to.have.property('id');
    pm.expect(jsonData).to.have.property('name');
    pm.expect(jsonData.email).to.include('@');
});

// 변수 저장
const jsonData = pm.response.json();
pm.environment.set("member_id", jsonData.id);

팀 협업 기능

1. 컬렉션 공유

방법 1: 공유 링크

 
컬렉션 우클릭 > Share > Get public link

방법 2: 팀 워크스페이스

 
Invite > 팀원 이메일 입력 > Send Invites

2. API 문서화

Postman은 자동으로 API 문서를 생성합니다.

 
컬렉션 선택 > View documentation > Publish

3. Mock Server

실제 백엔드 없이 프론트엔드 개발이 가능합니다.

 
컬렉션 우클릭 > Mock collection > Create mock server

실전 예제: Spring Boot API 테스트

프로젝트: 학회 관리 시스템

1. 회원 가입 테스트

 
javascript
// Pre-request Script
const testUser = {
    studentId: `2024${Math.floor(Math.random() * 10000)}`,
    name: "테스트 유저",
    email: `test${Date.now()}@handong.edu`,
    department: "전산전자공학부",
    position: "일반회원"
};

pm.variables.set("testUser", JSON.stringify(testUser));
 
http
POST {{base_url}}/api/members
Content-Type: application/json

{{testUser}}
 
javascript
// Tests
pm.test("회원 가입 성공", function () {
    pm.response.to.have.status(201);
    
    const response = pm.response.json();
    pm.expect(response).to.have.property('id');
    
    // 다음 테스트를 위해 ID 저장
    pm.environment.set("created_member_id", response.id);
});

2. 로그인 및 토큰 저장

 
javascript
// Tests (로그인 응답 후)
const response = pm.response.json();
pm.environment.set("access_token", response.accessToken);

// 이후 모든 요청의 Authorization 탭에서
// Type: Bearer Token
// Token: {{access_token}}

3. Collection Runner 사용

  1. Runner 탭 열기
  2. 컬렉션 선택
  3. 환경 선택
  4. 실행 순서 확인
  5. Run 클릭
 
✅ 회원 가입 (201)
✅ 로그인 (200)
✅ 회원 목록 조회 (200)
✅ 회원 정보 수정 (200)
✅ 회원 탈퇴 (204)

꿀팁 모음

1. 단축키

  • Ctrl + S: 요청 저장
  • Ctrl + Enter: 요청 전송
  • Ctrl + Alt + C: 콘솔 열기
  • Ctrl + /: 주석 토글

2. 동적 변수

 
javascript
{{$guid}}         // UUID 생성
{{$timestamp}}    // Unix 타임스탬프
{{$randomInt}}    // 랜덤 정수
{{$randomEmail}}  // 랜덤 이메일

3. 파일 업로드

Body 탭에서 form-data 선택:

 
key: file (File 타입 선택)
value: 파일 선택

4. 인증 처리

Basic Auth

 
Authorization 탭 > Type: Basic Auth
Username: admin
Password: password

Bearer Token

 
Authorization 탭 > Type: Bearer Token
Token: {{access_token}}

API Key

 
Headers 탭
X-API-Key: {{api_key}}

5. 응답 데이터 시각화

 
javascript
// Tests 탭에서 시각화
const template = `
<table>
    <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Email</th>
    </tr>
    {{#each response}}
    <tr>
        <td>{{id}}</td>
        <td>{{name}}</td>
        <td>{{email}}</td>
    </tr>
    {{/each}}
</table>
`;

pm.visualizer.set(template, {
    response: pm.response.json()
});

마무리

Postman은 단순한 API 테스트 도구를 넘어 API 개발의 전 과정을 지원하는 강력한 플랫폼입니다. 이 글에서 소개한 기능들을 하나씩 익혀나가다 보면, API 개발 생산성이 크게 향상될 것입니다.

추가 학습 자료

728x90
반응형
이 페이지는 리디주식회사에서 제공한 리디바탕 글꼴이 사용되어 있습니다.