swagger 2.0에서 OAS 3.0으로 변환시 body 값이 undefined로 표출 되는 현상 처리
이전에 작성했던 Swagger 2.0으로 된 프로젝트를 새로 배운 OAS 3.0으로 변환하는 작업을 해보았습니다.
Swagger Editor을 통해서 변환을 하고, oas-generator 이용해서 코드를 자동 생성하였습니다.
이후 POST, PUT 등을 확인하는 중 requestBody를 넘기면 다음과 같이 접근해야 값을 확인 할 수 있었습니다.
function createPets(req, res, next) {
let params = req.swagger.params[undefined].value;
res.status(200).send({ status: 'OK', message: 'TEST OK!', params });
}
Swagger 2.0에서는 req.swagger.params.body.value 를 이용하였는데, 어떤 문제인지 검색을 해보니, OAS 3.0에서는 x-name이 라는 옵션을 주어서 requestBody의 이름을 설정해야 했습니다.
샘플
post:
summary: Create a pet
operationId: createPets
tags:
- pets
requestBody:
description: Pet to add to the store
x-name: pet # 이 이름을 사용해서 조회 하도록 합니다.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Pet'
이후 다음과 같이 사용할 수 있었습니다.
function createPets(req, res, next) {
let params = req.swagger.params.pet.value;
res.status(200).send({ status: 'OK', message: 'TEST OK!', params });
}
이 내용은 5. Add name property to request bodies를 보면 예제로 표기 되어 있습니다.