우리가 Apis의 테스트를 수행할 때, API 응답 데이터에서 특정 값을 추출하여 추가 처리 및 사용(보통 추가 요청을 위한)에 필요한 경우가 많습니다. 일반적으로 API 응답 데이터는 JSON 또는 XML 형식입니다. JSON은 간결하고 읽기 쉽고 파싱하기 쉬워 가장 일반적이고 선호되는 형식입니다. 따라서 이 문서는 JSON 데이터를 파싱하는 기술에 중점을 둘 것입니다.
처리가 필요한 응답의 주요 부분은 응답 헤더와 응답 본문입니다. Apidog는 분석을 위해 응답 헤더와 응답 본문 내용을 모두 추출할 수 있는 도구를 제공합니다. 이 포스트에서는 Apidog에서 API 응답 데이터를 추출하는 기술을 탐구할 것입니다.
Apidog에서 응답 헤더 추출하기
모든 HTTP 응답에는 응답에 대한 메타데이터를 제공하는 헤더가 포함되어 있습니다. 응답 헤더는 값과 함께 목록 형식으로 표시됩니다. 목록을 스크롤하여 검토할 수 있습니다.
종종 특정 헤더 값을 검증하기 위해 추출하고 싶을 수 있습니다. 예를 들어, 인증 API를 테스트할 때 응답에서 유효한 토큰을 반환하는지 확인하고 싶을 수 있습니다.
Apidog는 해당 헤더 값을 저장하는 변수를 자동으로 생성합니다. 그런 다음 이 변수를 후속 테스트 단계에서 참조하여 값을 검증할 수 있습니다. 이는 검증을 위한 응답 헤더를 추출하는 편리한 방법입니다.
API에서의 샘플 응답 헤더:
"Session-Token"이라는 키를 가진 헤더의 전체 값을 추출하려면, API의 "Post Action" 섹션에 키 이름을 입력하면 됩니다.
그러나 Session-Token 헤더 값의 일부만 추출하고 싶다면, 예를 들어 msToken 값만 추출하고 싶다면 어떻게 해야 할까요? 이 경우 정규 표현식을 사용하여 추출을 수행하는 스크립트를 사용해야 합니다.
Session-Token에서 Token 값을 추출하기 위한 스크립트는 다음과 같습니다:
pm.response.headers.toJSON()[2]['value'].toString().match(/msToken=([^;\s"]+)/)[1]
이 스크립트에서 우리는 먼저 pm.response.headers를 사용하여 전체 Session-Token 헤더 값을 가져옵니다. 그런 다음 정규 표현식을 사용하여 Session-Token에서 msToken 값만 추출합니다. 이는 배열을 반환하므로 실제 값을 얻기 위해 배열에 인덱싱합니다.
응답 본문 내용 추출하기
헤더 외에도 응답 본문에는 API에서 반환된 페이로드가 포함되어 있습니다. 응답 내용을 분석하려면 먼저 이를 추출하거나 파싱해야 합니다.
응답이 JSON 데이터인 경우, Apidog는 자동으로 이를 구조화된 JSON 변수로 변환할 수 있습니다. 이를 활성화하기 위해:
- API의 "Post Processors" 섹션에서 "Extract Variable"을 선택합니다.
2. JSONPath 표현식 및 기타 옵션을 입력합니다.
3. 설정을 마친 후 요청을 보냅니다. Apidog는 제공한 JSONPath 표현식에 따라 응답 데이터에서 해당 필드 값을 추출합니다. 추출된 값은 "Environment/Global/Temporary" 변수에 자동으로 저장됩니다.
Apidog는 JSON을 파싱하고 나중에 테스트 단계에서 참조할 수 있는 변수들을 생성합니다.
XML이나 일반 텍스트와 같은 비JSON 콘텐츠의 경우, 정규 표현식을 사용하여 특정 부분을 추출해야 할 수 있습니다. Apidog는 응답에서 하위 문자열이나 값을 매치하고 추출하기 위해 정규식 패턴을 시각적으로 빌드하는 것을 지원합니다.
요약
응답 데이터를 추출할 수 있는 것은 효과적인 API 테스트에 매우 중요합니다. Apidog는 헤더와 응답 본문 내용을 추출하기 위한 유연한 내장 도구를 제공합니다. 자동화된 JSON 추출은 일반적인 사용 사례를 처리하며, 정규 표현식은 복잡한 응답에 대한 전체 제어를 제공합니다.
이 데이터 추출 기술을 API 테스트에 활용하여 검증을 단순화하고 커버리지를 향상시키십시오. Apidog를 사용하면 응답 데이터를 실행 가능한 변수로 전환하여 주요 세부 사항을 주장하고 후속 테스트 단계를 강화할 수 있습니다. 더 견고한 테스트는 더 높은 품질의 API와 더 나은 사용자 경험으로 이어집니다.