Postman 사용법 완벽 가이드: GET, POST, PUT, DELETE 실습부터 컬렉션까지

Postman 설치는 완료했지만 어떻게 사용해야 할지 막막하신가요? 이 가이드에서는 Postman의 기본 인터페이스부터 GET, POST, PUT, DELETE 요청 실습, 컬렉션 관리, 환경 변수 설정까지 실무에서 바로 활용할 수 있는 모든 내용을 다룹니다.

Postman 인터페이스 이해하기

Postman을 처음 실행하면 다양한 메뉴와 버튼들이 보입니다. 먼저 핵심 영역들을 파악해봅시다.

메인 화면 구성

1. 왼쪽 사이드바

  • Collections: API 요청을 폴더로 구조화
  • History: 최근 실행한 요청 기록
  • Environments: 환경 변수 관리

2. 중앙 작업 영역

  • Request Builder: API 요청 작성
  • Response Viewer: API 응답 확인

3. 상단 바

  • New: 새 요청/컬렉션 생성
  • Import: 외부 파일 가져오기
  • Runner: 컬렉션 일괄 실행

4. 우측 상단

  • Account: 계정 및 설정
  • Environment Selector: 환경 변수 선택

첫 번째 API 요청 보내기 (GET 메서드)

가장 기본적인 GET 요청부터 시작해봅시다.

GET 요청이란?

서버로부터 데이터를 가져오는(조회하는) HTTP 메서드입니다. 데이터를 변경하지 않는 안전한 요청입니다.

실습: JSONPlaceholder로 GET 요청

JSONPlaceholder는 무료 테스트용 REST API를 제공합니다.

1단계: 새 요청 만들기

  1. 좌측 상단의 “New” 또는 “+” 버튼 클릭
  2. “HTTP Request” 선택
  3. 새 탭이 열립니다

2단계: HTTP 메서드 선택

  • 왼쪽 드롭다운에서 GET 선택 (기본값)

3단계: URL 입력

https://jsonplaceholder.typicode.com/posts

4단계: Send 버튼 클릭

하단에 응답이 나타납니다:

json

[
  {
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere...",
    "body": "quia et suscipit..."
  },
  ...
]
```

### 응답 탭 이해하기

응답 필드에는 결과 또는 오류가 발생한 경우 이를 포함하는 API의 전체 응답이 포함됩니다 .

**① Body 탭**
- Pretty: JSON을 보기 좋게 포맷
- Raw: 가공되지 않은 원본 데이터
- Preview: HTML 응답을 렌더링
- Visualize: 데이터 시각화

**② Cookies 탭**
- 서버가 설정한 쿠키 확인

**③ Headers 탭**
- 응답 헤더 정보 (Content-Type, Server 등)

**④ Test Results 탭**
- 테스트 스크립트 실행 결과

**⑤ Status**
- 200 OK: 성공
- 응답 시간 (예: 324ms)
- 응답 크기 (예: 5.6 KB)

### Query Parameters 사용하기

GET 요청에서 데이터를 필터링할 때 사용합니다.

**예시: 특정 사용자의 게시물만 가져오기**
```
https://jsonplaceholder.typicode.com/posts?userId=1
```


Postman에서는 더 편리하게 설정할 수 있습니다:

1. **Params** 탭 클릭
2. Key-Value 형식으로 입력:
   - Key: `userId`
   - Value: `1`
3. **Send** 클릭


Postman이 자동으로 URL을 생성합니다!

### Path Parameters 사용하기

URL 경로에 변수를 넣는 방식입니다.

**예시: 특정 게시물 하나만 가져오기**
```
https://jsonplaceholder.typicode.com/posts/1

1번 게시물의 데이터만 반환됩니다:

json

{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere...",
  "body": "quia et suscipit..."
}
```

## POST 요청 실습 (데이터 생성)

POST는 GET과 달리 query string으로 요청하지 않고 Body로 데이터를 전송합니다 .

### POST 요청이란?

서버에 새로운 데이터를 생성(등록)하는 HTTP 메서드입니다.

### 실습: 새 게시물 작성하기

**1단계: HTTP 메서드 변경**

- 드롭다운에서 **POST** 선택

**2단계: URL 입력**
```
https://jsonplaceholder.typicode.com/posts

3단계: Body 탭 선택

4단계: Body 타입 선택

  • raw 선택
  • 오른쪽 드롭다운에서 JSON 선택

5단계: JSON 데이터 입력

json

{
  "title": "Postman 사용법 배우기",
  "body": "Postman으로 API 테스트를 쉽게 할 수 있습니다!",
  "userId": 1
}

6단계: Send 버튼 클릭

응답:

json

{
  "title": "Postman 사용법 배우기",
  "body": "Postman으로 API 테스트를 쉽게 할 수 있습니다!",
  "userId": 1,
  "id": 101
}
```

서버가 자동으로 `id: 101`을 할당해 생성을 확인해줍니다!

PATCH 요청 실습 (부분 수정)

3단계: Body 입력 (수정할 필드만)

json

{
  "title": "PATCH로 수정한 제목"
}

4단계: Send

Request Body에 수정을 원하는 필드만 포함하여 요청을 전송합니다 Devpro.

응답:

json

{
  "userId": 1,
  "id": 1,
  "title": "PATCH로 수정한 제목",
  "body": "기존 내용 유지"
}
```

3단계: Send

DELETE는 일반적으로 Body가 필요 없습니다.

응답:

json

{}
```

또는 상태 코드 `204 No Content` 반환

## 요청 저장하기

매번 URL과 설정을 입력하는 것은 비효율적입니다. 요청을 저장해봅시다.

### 개별 요청 저장

**1단계: Save 버튼 클릭** (또는 Ctrl/Cmd + S)

**2단계: 요청 정보 입력**

- **Request name**: 게시물 목록 조회
- **Request description**: 모든 게시물을 가져옵니다 (선택사항)

**3단계: 저장 위치 선택**

- 기존 컬렉션 선택 또는
- **+ Create Collection** 클릭

**4단계: Save** 버튼 클릭

이제 왼쪽 사이드바의 컬렉션에서 언제든 다시 실행할 수 있습니다!

환경 전환하기

  1. 우측 상단 Environment selector (눈 모양 아이콘 옆)
  2. 드롭다운에서 원하는 환경 선택
  3. 선택된 환경의 변수들이 적용됩니다

변수 우선순위

글로벌 환경 변수는 특정 환경의 변화와 무관하게 사용되는 전역 변수로, 지역 환경 변수가 설정되어 있다고 하더라도 글로벌 변수가 설정되어 있다면 우선순위는 글로벌 환경 변수가 더 높습니다 VelogGitbook.

우선순위 (높음 → 낮음):

  1. Local 변수
  2. Data 변수
  3. Environment 변수
  4. Collection 변수
  5. Global 변수

Global 변수 설정

모든 환경에서 공통으로 사용하는 값:

  1. 우측 상단 눈 모양 아이콘 클릭
  2. Globals 섹션에서 Edit 클릭
  3. 변수 추가
  4. Save

Headers 설정하기

Authorization (인증)

1. API Key 방식

KeyValueX-API-Keyyour_api_key_here

2. Bearer Token 방식

  1. Authorization 탭 클릭
  2. Type: Bearer Token 선택
  3. Token 입력

3. Basic Auth 방식

  1. Type: Basic Auth 선택
  2. Username과 Password 입력

공통 Headers 설정

매 요청마다 동일한 헤더가 필요하다면 컬렉션 레벨에서 설정:

  1. 컬렉션 선택
  2. Authorization
  3. 인증 방식 선택
  4. 하위 모든 요청에 자동 적용!

Request Body 타입

1. form-data

파일 업로드 시 주로 사용:

KeyValueTypename홍길동Textprofile[파일 선택]File

2. x-www-form-urlencoded

HTML 폼 형식:

KeyValueusernamehongpassword1234

3. raw (JSON)

가장 많이 사용:

json

{
  "username": "hong",
  "password": "1234"
}

4. binary

단일 파일 전송:

  • Select File 버튼으로 파일 선택

5. GraphQL

GraphQL 쿼리:

graphql

query {
  user(id: 1) {
    name
    email
  }
}

테스트 스크립트 작성하기

API 응답을 자동으로 검증하는 스크립트를 작성할 수 있습니다.

Tests 탭 사용하기

예시: 상태 코드 검증

javascript

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

예시: 응답 시간 검증

javascript

pm.test("Response time is less than 500ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(500);
});

예시: JSON 데이터 검증

javascript

pm.test("Body contains userId", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData[0]).to.have.property('userId');
});

예시: 응답 값을 환경 변수로 저장

javascript

var jsonData = pm.response.json();
pm.environment.set("post_id", jsonData.id);

스니펫 활용하기

오른쪽 Snippets에서 자주 사용하는 테스트 코드를 클릭하면 자동 삽입됩니다!

Pre-request Script

요청을 보내기 전에 실행되는 스크립트입니다.

예시: 타임스탬프 생성

javascript

pm.environment.set("timestamp", new Date().toISOString());

예시: 랜덤 데이터 생성

javascript

pm.environment.set("random_email", 
    "user" + Math.floor(Math.random() * 10000) + "@example.com"
);
```

## Collection Runner 사용하기

여러 요청을 순차적으로 자동 실행합니다.

### Runner 실행 방법

**1단계: Runner 열기**

1. 컬렉션 옆 **▶** 버튼 클릭
2. 또는 상단 **Runner** 버튼

**2단계: 설정**

- **Iterations**: 반복 횟수 (기본 1회)
- **Delay**: 요청 간 대기 시간 (ms)
- **Data**: CSV/JSON 파일로 데이터 주입 (선택)

**3단계: Run [컬렉션명]** 버튼 클릭

### Runner 결과 확인

- ✅ 성공한 요청: 녹색
- ❌ 실패한 요청: 빨간색
- 각 테스트 결과 상세 표시

## 컬렉션 공유하기

### Export (내보내기)

**1단계: 컬렉션 Export**

1. 컬렉션 옆 **⋯** 클릭
2. **Export** 선택
3. Collection v2.1 선택 (권장)
4. **Export** 버튼
5. JSON 파일 저장

**2단계: 팀원에게 전달**

- 이메일, 슬랙, GitHub 등으로 공유

### Import (가져오기)

**받은 사람:**

1. **Import** 버튼 클릭
2. **Upload Files** 선택
3. JSON 파일 선택
4. **Import** 확인

### 온라인 공유 (로그인 필요)

1. 컬렉션 옆 **⋯** 클릭
2. **Share** 선택
3. **Get Link** 또는 **Invite Users**
4. 링크 복사 또는 이메일 초대

## Postman 실전 활용 팁

### 1. 자주 쓰는 단축키

**Windows/Linux:**
- 새 요청: `Ctrl + N`
- 저장: `Ctrl + S`
- 전송: `Ctrl + Enter`
- 검색: `Ctrl + K`

**macOS:**
- 새 요청: `Cmd + N`
- 저장: `Cmd + S`
- 전송: `Cmd + Enter`
- 검색: `Cmd + K`

### 2. 요청 복사하기

- 요청 우클릭 > **Duplicate**
- 또는 `Ctrl + D` / `Cmd + D`

### 3. 히스토리 활용

- **History** 탭에서 최근 실행한 요청 확인
- 요청 클릭하면 재실행 가능

### 4. 코드 생성하기

API 요청을 다양한 언어의 코드로 변환:

1. 요청 오른쪽 **</>** (Code) 버튼 클릭
2. 언어 선택:
   - JavaScript (fetch)
   - Python (requests)
   - cURL
   - Java (OkHttp)
   - PHP (cURL)
   등등
3. **Copy to Clipboard**

### 5. Mock Server 만들기

실제 서버 없이 API 응답을 시뮬레이션:

1. 컬렉션 옆 **⋯** 클릭
2. **Mock collection** 선택
3. Mock 서버 이름 입력
4. **Create Mock Server**

### 6. API 문서 자동 생성

1. 컬렉션 옆 **⋯** 클릭
2. **View documentation** 선택
3. **Publish** 버튼으로 온라인 공개 가능

### 7. Workspace 활용

프로젝트 단위로 API 요청들을 체계적으로 분리하고 관리할 수 있습니다 .

- Personal: 개인 작업
- Team: 팀 협업
- Public: 오픈 소스 API

## 실전 예제: CRUD 전체 플로우

완전한 CRUD 작업을 Postman으로 실습해봅시다.

### 1. 게시물 목록 조회 (Read)
```
GET {{base_url}}/posts
```

### 2. 새 게시물 작성 (Create)
```
POST {{base_url}}/posts
Body (JSON):
{
  "title": "새 게시물",
  "body": "내용",
  "userId": 1
}
```

### 3. 작성한 게시물 확인 (Read)
```
GET {{base_url}}/posts/101
```

### 4. 게시물 수정 (Update)
```
PUT {{base_url}}/posts/101
Body (JSON):
{
  "id": 101,
  "title": "수정된 게시물",
  "body": "수정된 내용",
  "userId": 1
}
```

### 5. 게시물 삭제 (Delete)
```
DELETE {{base_url}}/posts/101

문제 해결

요청이 실패할 때

1. 네트워크 오류

  • 인터넷 연결 확인
  • VPN이 API 접근을 차단하는지 확인
  • 방화벽 설정 확인

2. 401 Unauthorized

  • API 키 또는 토큰 확인
  • Authorization 헤더 설정 확인

3. 404 Not Found

  • URL 오타 확인
  • 경로 파라미터 확인

4. 500 Internal Server Error

  • 서버 문제 (개발자에게 문의)
  • Request Body 형식 확인

환경 변수가 작동하지 않을 때

  1. 환경이 선택되어 있는지 확인
  2. 변수 이름 확인 (대소문자 구분)
  3. {{변수명}} 형식 확인

응답이 깨져 보일 때

  • Pretty 탭 선택
  • Content-Type이 올바른지 확인

결론

Postman 사용법을 마스터했습니다! 이제 다음을 할 수 있습니다:

✅ GET, POST, PUT, DELETE 요청 자유자재로 사용
✅ 컬렉션으로 API 체계적 관리
✅ 환경 변수로 개발/테스트/운영 환경 분리
✅ 테스트 스크립트로 API 응답 자동 검증
✅ 팀원들과 컬렉션 공유 및 협업