ProgramingTip

Swagger API 선언에서 JSON-Schema를 생성하는 방법

bestdevel 2020. 11. 15. 11:36
반응형

Swagger API 선언에서 JSON-Schema를 생성하는 방법


Swagger v 1.2를 사용하는 서비스에 대한 Swagger API 선언이 있습니다.

Swagger는 JSON Schema (Draft 3 및 최근 Draft 4)에 매우 가깝고 요청 및 응답에 대해 JSON Schema를 생성하는 것이 좋습니다.

그러나 Swagger의 일부는 JSON 스키마 구조를 사용하지만 기능의 하위 집합 만 사용 subTypes하고 모델 ( 사용 discriminator) 에 자체 상속을 도입했습니다 .

질문 : Swagger API 선언에서 사용 가능한 JSON 스키마를 생성 할 수있는 기존 프로젝트 또는 코드가 ?

최적화로 JSON Schema Draft 4와 Python을 사용합니다 (하지만 무엇이든 찾게되어 기쁩니다).


REST API를 지정하고 관련 테스트 스위트에서 업무하기 위해 Swagger를 사용하여 더 오래 싸운 후에는 내 경험을 공유 할 것입니다 (자신의 질문에 답변).

Swagger는 JSON Schema Draft 4의 하위 집합 만 지원합니다.

Swagger 1.2 및 2.0 상태의 사양은 JSON Schema Draft 4 (s. 여기 ) 의 하위 집합 만 지원합니다 . 이것은 다음을 의미합니다.

  • Swagger는 모든 유효한 JSON 스키마를 완벽하게 지원할 수 있습니다.
  • XML을 생각하면 Swagger는 JSON Schema Draft 4에서 제공하는 JSON 구조의 하위 집합에 대한 표준 표현 만 지원합니다.

다시 말해 :

  • Swagger (1.2 및 2.0)는 JSON Schema Draft 4 사용에서 유효한 많은 JSON 구조의 지원하지 않습니다 (Draft 3에도 동일하게 적용됨).
  • Swagger는 일반 XML 데이터 구조를 지원하지 않고 매우 많은 구조 만 허용됩니다.

Swagger를 사용하면 Swagger를 사용하여 시작하고 끝나야합니다.

JSON 스키마를 얻는 것은 이론적으로 가능하지만 쉽지는 않습니다.

Swagger API 사양을 사용하고 JSON Schema Draft 4를 코딩하는 데 시간을 보겠습니다. 몇 가지 가지 포기했습니다.

  • 전혀하지 않았다
  • JSON Schema가 제공하는 것의 일부만 사용할 수 있지만 사실에 실망했습니다. 이미 제안 된 JSON 형식의 Swagger 프레임에서 허용하는 규격에 맞게 수정을 시작해야합니다.

API를 보여주고 테스트하기위한 정말 멋진 UI를 사용하는 것 외에 (예, 동의합니다. 사양으로 매우 즐겁습니다), 프레임 워크가 우리가 원하는 것을 추가 할 수 없지만 예상치 않습니다. 우리의 디자인에.

전체 JSON 또는 XML 스키마 지원을 원하면 RAML을 사용하십시오.

다른 API 사양 프레임 워크를 조사하면서 RAML을 발견했습니다. JSON Schema Draft 3/4 또는 W3C XML Schema 1.0 데이터 구조를 지원하여 처음부터 구축 완료 기 때문에 경험이 탁월했습니다. 페이로드 구조가 설계되어있어 API 사양을 매우 빠르게 작성하고 구매 요청의 유효성을 확인할 수 있습니다. 정의 된 스키마에 대한 응답은 매우 쉬웠습니다. 스키마는 제한 사항을 추가하지 않고 사양의 필수 구성 요소이기 때문입니다.

RAML은 최신 버전 0.8 버전 1.0은 아직 입증되지 않았습니다.

질문을 수정하면 실제 솔루션으로 이어집니다.

좋은 질문이 해결의 절반을 만듭니다. 내 실제 기대치는 못해 내 질문이 잘못되었습니다. 수정 된 질문은 다음과 가변합니다.

임의 지정의 JSON Schema Draft 4 또는 W3C XML Schema 1.0에서 정의한 페이로드를 사용하여 REST API를 사용하기 위해 사용할 수있는 프레임 워크 및 기술.

대답은 다음과 대답합니다.

  1. JSON Schema Draft 4 또는 W3C XML Schema에서 페이로드 설계
  2. RAML (현재 v0.8)을 사용하여 REST API를 설명하십시오.

사용 가능한 다른 사양 프레임 Swagger (v1.2도 v2.0도 아님)는 확실히 말할 수 있습니다. 많은 기능 (코드 생성, API에 대한 매우 멋진 문서 등)을 제공하는 것 외에도 한 업데이트 된 질문에 대한 솔루션을 제공하는 데 실패합니다.


openapi2jsonschema 라는 이름으로 동일한 작업을 수행하는 기능 도구가 있습니다. 을 사용하여 간단히 사용할 수 있습니다 pip.

openapi2에 대한 추가 정보는 사용하는 가장 간단한 방법을 보여줍니다.

openapi2jsonschema https://raw.githubusercontent.com/kubernetes/kubernetes/master/api/openapi-spec/swagger.json

도움이 되셨기를 바랍니다.


방금 pyswagger 도구가 귀하의 필요에 맞는을 구석으로 같습니다.

자신감 API 선언을로드하고 파이썬 object-자신감 형식 기본 으로 /에서 CHAPTER 2 할 수 있습니다. 또한 자신감 서비스에 직접 지원 요청할 수 있는 클라이언트 구현 세트 ( 요청 고객tornado.httpclient.AsyncHTTPClient 포함 )를 제공합니다.

이 도구는 용어에서 Swagger를 적용 할 때 처음 접했던 문제를 해결하는 경향이 있고 지금도 꽤 새로운 것입니다. 제안을 환영합니다.


나는 다음과 같이 성공했습니다.

swagger.yaml-> proto-> jsonschema

나는 openapi2proto사용 하여 Swagger yaml에서 proto 파일을 생성 한 다음 protoc-gen-jsonschema 를 사용하여 JSONSchemas를 생성했습니다. 형식화 된 JSONSchema를 가져옵니다 만 충분하지만 proto3은 "필수"유형을 지원하지 않습니다.

참고 URL : https://stackoverflow.com/questions/24118243/how-to-generate-json-schema-from-swagger-api-declaration

반응형