Skip to content

Postman으로 방해받지않고 개발하기

sechan edited this page Dec 14, 2023 · 1 revision

Request

  • 도메인단위로 구분하고 API or 테스트할 단위로 request를 만들어 안드로이드/백엔드 모두 사용할 수 있도록 한다.
  • 기본적으로 APIDocs에 명시된 모든 API를 작성해 두고 사용한다.
사진 postman

Environments

  • 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 이 새롭게 저장된다.

Pre-request Script

  • 위의 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를 사용하였다.

⚽️협업 룰

코딩 컨벤션

📔회고

팀 회고

개인 회고

K004 김근범

K016 박찬민

K032 이해림

J153 차세찬

J156 최다정

👨‍🏫멘토링 회의록

💻개발일지

Android

K004 김근범

K016 박찬민

K032 이해림

J153 차세찬

J156 최다정

💡트러블슈팅

Android

K004 김근범

K016 박찬민

K032 이해림

J153 차세찬

J156 최다정

📋회의록

스크럼 회의

스프린트 회의

밋밋 회의

공통

BackEnd

Android

기획

Clone this wiki locally