-
Notifications
You must be signed in to change notification settings - Fork 5
Postman으로 방해받지않고 개발하기
sechan edited this page Dec 14, 2023
·
1 revision
- 도메인단위로 구분하고 API or 테스트할 단위로 request를 만들어 안드로이드/백엔드 모두 사용할 수 있도록 한다.
- 기본적으로 APIDocs에 명시된 모든 API를 작성해 두고 사용한다.
사진
![postman](https://private-user-images.githubusercontent.com/97400357/290412354-b7ef8bfe-0673-4813-8ea5-dfaf7743d050.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU1MjM0NTksIm5iZiI6MTcyNTUyMzE1OSwicGF0aCI6Ii85NzQwMDM1Ny8yOTA0MTIzNTQtYjdlZjhiZmUtMDY3My00ODEzLThlYTUtZGZhZjc3NDNkMDUwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MDUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTA1VDA3NTkxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ1MjM4YTc3ZDk3Mjc4NThhNDMyM2ZjNmIzMjRiODU3ODVlNzkzY2U3NGZhODI1YTk3MmFiZTgzOGQ2MTQxMGEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.hXFHpK8-jxaEF6M6vu9Sry2gsCAX6yPjF9r6euds1hg)
-
postman 사용이 가장 귀찮은 이유는 AccessToken이 만료되면 다시 로그인하고 복사/붙여넣기를 해야한다는 단점이 있고, 그것을 더 쉽게 만들기 위해 환경변수를 사용하였다.
-
environments에
accessToken
,refreshToken
을 세팅하고/auth/login
,/auth/kakao
의 Tests에 하단의 코드를 작성한다.const responseData = pm.response.json(); pm.environment.set("accessToken", responseData.accessToken) pm.environment.set("refreshToken", responseData.refreshToken)
-
각 로그인을 테스트할 경우 자동으로 환경변수에
accessToken
,refreshToken
이 새롭게 저장된다.
-
위의 Tests의 코드를 작성해도 결국
accessToken
이 만료되면 다시 login request로 가서 토큰을 갱신해야하는 단점이 있었다. -
postman의 pre-request script를 통하여 로그인하기전 현재
accessToken
이 만료되었는지 확인하고, 만료되었다면refreshToken
을 사용하여 새롭게 갱신하도록 만들었다.pm.sendRequest({ url: pm.environment.get('server') + '/auth/check/token', method: 'POST', headers: { 'accept': '*/*', 'Content-Type': 'application/x-www-form-urlencoded', }, body: { mode: 'urlencoded', urlencoded : [ { key: 'token', value: pm.environment.get('accessToken')}, ] } }, function (err, res) { // 418은 프로젝트 내에서 약속된 만료된 token이라는 신호이다. if (res.code===418) { pm.sendRequest({ url: pm.environment.get('server') + '/auth/refresh', method: 'POST', headers: { 'accept': '*/*', 'Content-Type': 'application/x-www-form-urlencoded', }, body: { mode: 'urlencoded', urlencoded : [ { key: 'refreshToken', value: pm.environment.get('refreshToken')}, ] } }, function(err, res) { res_data = res.json(); pm.environment.set("accessToken", res_data.accessToken) console.log('update accessToken') }) } else { console.log('alive') } });
-
postman을 사용하며 테스트하는데 지연되는일이 없도록 pre-request script를 사용하였다.
- Week1 - Day01
- Week1 - Day02
- Week1 - Day03
- Week1 - Day04
- Week2 - Day01
- Week2 - Day02
- Week2 - Day03
- Week2 - Day04
- Week3 - Day01
- Week3 - Day02
- Week3 - Day03
- Week3 - Day04
- Week4 - Day01
- Week4 - Day02
- Week4 - Day03
- Week4 - Day04
- Week4 - Day05
- Week5 - Day01
- Week5 - Day02
- Week5 - Day03
- Week5 - Day04
- Week6 - Day01
- Week6 - Day02