HTTP API μ›Ή μ‘μš©ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•  λ•Œ, Postman 을 많이 μ‚¬μš©ν•©λ‹ˆλ‹€.

μž‘μ„±ν•œ API κ°€ 잘 λ™μž‘ν•˜λŠ”μ§€ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ‚¬μš©ν•˜λŠ” 것과 λ™μΌν•œ μš”μ²­μ„ GUIλ₯Ό 톡해 μ‹€ν–‰ν•  수 μžˆμ–΄ 맀우 νŽΈλ¦¬ν•©λ‹ˆλ‹€.

postman variable usage 001

무료 μš”κΈˆμ œ λ₯Ό μ‚¬μš©ν•΄λ„ 맀우 λ§Žμ€ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

λ§Žμ€ κΈ°λŠ₯ 쀑 λ°˜λ³΅λ˜λŠ” κ°’ - 예λ₯Ό λ“€λ©΄ κΈ°λ³Έ μ£Όμ†Œ -을 μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ λ³€μˆ˜ κΈ°λŠ₯을 μ’‹μ•„ν•©λ‹ˆλ‹€.

λ³€μˆ˜ Variable

μ’…λ₯˜

λ³€μˆ˜λŠ” κΈ€λ‘œλ²Œ, μ½œλ ‰μ…˜, ν™˜κ²½, 데이터, 둜컬 λ‹¨μœ„λ‘œ 관리가 κ°€λŠ₯ν•©λ‹ˆλ‹€.

μ „μ—­ λ³€μˆ˜μ™€ ν™˜κ²½ λ³€μˆ˜λŠ” 였λ₯Έμͺ½ μœ„ λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ 관리 화면을 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

postman variable usage 002

μ½œλ ‰μ…˜ λ³€μˆ˜λŠ” μ½œλ ‰μ…˜ νŽΈμ§‘ ν™”λ©΄μ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš©

HTTP API λŠ” 기본적으둜 ν•˜λ‚˜μ˜ κΈ°λŠ₯이 ν•˜λ‚˜μ˜ URIλ₯Ό κ°–μŠ΅λ‹ˆλ‹€.

인증처리λ₯Ό ν•˜λŠ” URI

POST https://your-service.com/api/signin
{
    "username": "<your username>",
    "password": "<your password>"
}

맀μž₯ 정보λ₯Ό μš”μ²­ν•˜λŠ” URI

GET https://your-service.com/api/stores
Authorization Bearer <your token>

Postman 을 μ‚¬μš©ν•˜λ©΄ 보톡 ν•œλ²ˆλ§Œ μž‘μ„±ν•œ ν›„ μ €μž₯ν•˜λ©΄, λ‹€μ‹œ λΆˆλŸ¬μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

그런데, λ™μΌν•œ APIλ₯Ό ν…ŒμŠ€νŠΈ μ„œλ²„ λŒ€μƒ, μŠ€ν…Œμ΄μ§• μ„œλ²„ λŒ€μƒ, ν”„λ‘œλ•μ…˜ μ„œλ²„ λŒ€μƒμœΌλ‘œ ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•˜λ €κ³  ν•˜λ©΄ μ£Όμ†Œ μ•žλΆ€λΆ„λ§Œ λ‹€λ₯΄κ³  λ‚˜λ¨Έμ§€ 뢀뢄이 동일할 수 μžˆμŠ΅λ‹ˆλ‹€.

ν•΄λ‹Ή μ‹œλ‚˜λ¦¬μ˜€λŠ” ν™˜κ²½ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 μ’‹κ² μŠ΅λ‹ˆλ‹€.

예제 URI 의 https://your-service.com 뢀뢄이 λ‹€λ₯Ό κ²ƒμž…λ‹ˆλ‹€.

μ½œλ ‰μ…˜ νŽΈμ§‘ 화면을 μ—΄κ³  λ³€μˆ˜ νƒ­μ—μ„œ μ•„λž˜ 이미지와 같이 λ³€μˆ˜λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.

κΈ°λ³Έμ£Όμ†Œλ₯Ό http://localhost:3000 으둜 μ„€μ •ν•©λ‹ˆλ‹€.

postman variable usage 003

예제

ν…ŒμŠ€νŠΈ λŒ€μƒ μ›Ή μ‘μš©ν”„λ‘œκ·Έλž¨μ˜ κΈ°λ³Έμ£Όμ†ŒλŠ” http://localhost:3000 μž…λ‹ˆλ‹€.

/api/signin 끝점으둜 POST μš”μ²­μ„ ν•˜λ©΄ token 데이터λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

/api/stores 끝점으둜 μš”μ²­ 헀더에 Bearer 인증을 μΆ”κ°€ν•΄μ„œ GET μš”μ²­μ„ ν•˜λ©΄ μ‚¬μš©μžμ˜ 맀μž₯ 정보λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

POST /api/signin

{
    username,
    password
}
GET /api/stores
Authorization Bearer

Postman μ»¬λ ‰μ…˜ νŽΈμ§‘ μœˆλ„μš°λ₯Ό μ—΄κ³ , μ•„λž˜ λ³€μˆ˜ ν•­λͺ©μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

이름 μ΄ˆκΈ°κ°’ ν˜„μž¬κ°’
baseurl http://localhost:3000
token

Postman 의 ν˜„μž¬ μ»¬λ ‰μ…˜μ— signin μš”μ²­μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

μš”μ²­ URL은 {{baseurl}}/api/signin 을 μž…λ ₯ν•©λ‹ˆλ‹€.

postman variable usage 004

μ‘λ‹΅μ—μ„œ token λ³€μˆ˜μ˜ 값을 μ„€μ •ν•˜κΈ° μœ„ν•΄ Tests νƒ­μœΌλ‘œ μ΄λ™ν•©λ‹ˆλ‹€.

pm.test('call', ()=> {
    var jsonData = JSON.parse(responseBody);
    if(jsonData){
        if(jsonData.success){
            if(jsonData.data){
                const token = jsonData.data.token;
                pm.environment.set("token", token); // token λ³€μˆ˜μ˜ 값을 μ„€μ •
            }
        }
    }
});

postman variable usage 005

Test νƒ­μ˜ 였λ₯Έμͺ½μ— μ½”λ“œ 쑰각이 μ œκ³΅λ©λ‹ˆλ‹€.

이제 /api/signin 끝점으둜 μš”μ²­μ„ 보내면 응닡 λ°μ΄ν„°μ—μ„œ token 을 찾을 수 있으면 토큰 λ³€μˆ˜μ˜ 값이 μ„€μ •λ©λ‹ˆλ‹€.

Postman 의 ν˜„μž¬ μ»¬λ ‰μ…˜μ— get stores μš”μ²­μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

μš”μ²­ URL은 {{baseurl}}/api/stores λ₯Ό μž…λ ₯ν•©λ‹ˆλ‹€.

Authorization νƒ­μ—μ„œ 인증 ν˜•μ‹μ„ Bearer Token 으둜 μ„ νƒν•˜κ³  ν† ν°μ˜ 값은 λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  κ²ƒμ΄λ―€λ‘œ {{token}} 을 μž…λ ₯ν•©λ‹ˆλ‹€.

postman variable usage 006

μ€€λΉ„λ₯Ό λ§ˆμ³€μŠ΅λ‹ˆλ‹€.

Signin μš”μ²­μ„ λ¨Όμ € μ‹€ν–‰ν•΄μ„œ 토큰을 μ–»κ³ , Get stores μš”μ²­μ„ μ‹€ν–‰ν•˜λ©΄ 이전 Signin μš”μ²­μ—μ„œ 얻은 토큰을 μš”μ²­ 헀더 인증 κ°’μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.

그리고, ν…ŒμŠ€νŠΈ μ„œλ²„μ˜ κΈ°λ³Έ μ£Όμ†Œκ°€ λ³€κ²½λ˜λ©΄ μ»¬λ ‰μ…˜ λ³€μˆ˜μ˜ κ°’λ§Œ λ³€κ²½ν•˜λ©΄ ν•΄λ‹Ή μ»¬λ ‰μ…˜ λ‚΄μ˜ μš”μ²­μ΄ λ³€κ²½λœ κΈ°λ³Έμ£Όμ†Œλ₯Ό μ°Έμ‘°ν•  것 μž…λ‹ˆλ‹€.

였λ₯˜ μ •μ •

2019-11-03 ν˜„μž¬ μ»¬λ ‰μ…˜ λ³€μˆ˜λŠ” 슀크립트 ν™˜κ²½ Pre-request Script, Tests μ—μ„œ μ“°κΈ°λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

슀크립트둜 λ³€μˆ˜ κ°’ μ“°κΈ°λ₯Ό ν•˜λ €λ©΄ μ „μ—­ λ³€μˆ˜ λ˜λŠ” ν™˜κ²½ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ „μ—­λ³€μˆ˜ μ“°κΈ°

pm.globals.set("token", token);

ν™˜κ²½λ³€μˆ˜ μ“°κΈ°

pm.environment.set("token", token);

μ°Έμ‘°