Swagger는 RESTful 스타일의 웹 서비스를 구축, 설명, 호출, 시각화하기 위한 규범적이고 완전한 프레임워크입니다.
전체적인 목표는 클라이언트와 파일 시스템이 서버와 같은 속도로 업데이트되도록 하는 것입니다. 파일의 메서드, 매개변수, 모델은 서버 측 코드에 밀접하게 통합되어 있어 API가 항상 동기화될 수 있습니다. Swagger는 강력한 API 배포와 사용을 결코 쉽게 만들지 않았습니다.
복습
먼저, Core 3.1 ASP.NET 새 프로젝트를 만들고 nuget을 사용해 다음 명령어로 Swashbuckle.AspNetCore 패키지를 설치하세요:
startup.cs 파일에서 Swagger 서비스를 다음과 같이 구성하세요:
ConfigureServices 방법
구성 방법
다음 코드로 새로운 테스트 컨트롤러를 생성합니다:
테스트 컨트롤러 인터페이스 생성 제품 매개변수 모델 객체는 다음과 같습니다:
프로젝트를 시작하면 다음에 접근할 수 있습니다:http://localhost:18979/swagger/index.html, 아래 그림에서 볼 수 있습니다:
swagger.json 내용은 다음과 같습니다:
{ "openAPI": "3.0.1", "정보": { "title": "내 API", "버전": "v1" }, "길들": { "/api/Test/Create": { "포스트": { "태그": [ "테스트" ], "requestBody": { "내용": { "application/json": { "스키마": { "$ref": "#/components/스키마/제품" } }, "text/json": { "스키마": { "$ref": "#/components/스키마/제품" } }, "application/*+json": { "스키마": { "$ref": "#/components/스키마/제품" } } } }, "응답": { "200": { "설명": "성공", "내용": { "텍스트/평문": { "스키마": { "타입": "문자열" } }, "application/json": { "스키마": { "타입": "문자열" } }, "text/json": { "스키마": { "타입": "문자열" } } } } } } } }, "컴포넌트": { "스키마": { "정보": { "유형": "객체", "속성": { "isDiscount": { "타입": "불리언" }, "isVip": { "type": "불리언", "nullable": 참 } }, "additionalProperties": false }, "제품": { "유형": "객체", "속성": { "이름": { "type": "string", "nullable": 참 }, "비활성화": { "타입": "불리언" }, "정보": { "$ref": "#/컴포넌트/스키마/정보" } }, "additionalProperties": false } } }
}
우리는 불리언 타입과 nullable 불리언 타입 모두 true로 기본값이 된다는 것을 발견했습니다.일상 개발에서는 bool이 할당되지 않으면 기본값은 false여야 하고, null 타입은 null로 기본값이어야 합니다매개변수가 인식되지 않으면 Swagger를 사용해 커밋을 시뮬레이션하려고 합니다.사고는 쉽게 발생합니다。 (지난주에는 swagger를 사용해 불 매개변수가 기본적으로 참인 것처럼 시뮬레이션했고, 그 결과 위챗 메시지가 모든 사람에게 퍼졌습니다.)
불리언 타입을 기본적으로 false로 할당하려면 어떻게 해야 하나요? null 타입에 null이 할당되는 건 어떨까요?
ISchemaFilter에서 상속받는 새로운 클래스를 만들고, 코드는 다음과 같습니다:
그리고 swagger 서비스를 추가할 때는 다음과 같이 필터 AddSwaggerGen을 추가하세요:
일부 특수 불 필드의 경우, 기본값을 true로 설정해야 하며 추가할 수 있습니다[기본값(true)]특징은 다음과 같습니다:
{ "이름": "문자열", "disabled": 참, "정보": { "isDiscount": false, "isVip": null }
} swagger.json 파일은 다음과 같습니다:
{ "openAPI": "3.0.1", "정보": { "title": "내 API", "버전": "v1" }, "길들": { "/api/Test/Create": { "포스트": { "태그": [ "테스트" ], "requestBody": { "내용": { "application/json": { "스키마": { "$ref": "#/components/스키마/제품" } }, "text/json": { "스키마": { "$ref": "#/components/스키마/제품" } }, "application/*+json": { "스키마": { "$ref": "#/components/스키마/제품" } } } }, "응답": { "200": { "설명": "성공", "내용": { "텍스트/평문": { "스키마": { "타입": "문자열" } }, "application/json": { "스키마": { "타입": "문자열" } }, "text/json": { "스키마": { "타입": "문자열" } } } } } } } }, "컴포넌트": { "스키마": { "정보": { "유형": "객체", "속성": { "isDiscount": { "type": "불리언", "default": false }, "isVip": { "type": "불리언", "default": null, "nullable": 참 } }, "additionalProperties": false }, "제품": { "유형": "객체", "속성": { "이름": { "type": "string", "nullable": 참 }, "비활성화": { "type": "불리언", "기본값": 참 }, "정보": { "$ref": "#/컴포넌트/스키마/정보" } }, "additionalProperties": false } } }
} (끝)
|