이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 47519|회답: 4

[ASP.NET] Core(8) Swagger UI 기본 매개변수의 ASP.NET 구멍입니다.

[링크 복사]
게시됨 2021. 5. 8. 오후 1:27:02 | | | |
Swagger는 RESTful 스타일의 웹 서비스를 구축, 설명, 호출, 시각화하기 위한 규범적이고 완전한 프레임워크입니다.

전체적인 목표는 클라이언트와 파일 시스템이 서버와 같은 속도로 업데이트되도록 하는 것입니다. 파일의 메서드, 매개변수, 모델은 서버 측 코드에 밀접하게 통합되어 있어 API가 항상 동기화될 수 있습니다. Swagger는 강력한 API 배포와 사용을 결코 쉽게 만들지 않았습니다.

복습

ASP.NET 핵심 (7) 프레임워크 소스 코드에 대한 심층 분석
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET 코어(VI) DI는 객체 주입 방식을 수동으로 획득합니다
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET 코어(다섯 개)는 CAP 분산 트랜잭션을 기반으로 합니다
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET 코어(4) 필터 통합 모델스테이트 모델 검증
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET 코어 (iii) ActivatorUtilities를 사용하여 동적으로 인스턴스를 생성합니다
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET 코어 (2) 코드로 애플리케이션을 재시작함
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET 코어(1)는 Redis 캐싱을 사용합니다
https://www.itsvse.com/thread-9393-1-1.html

먼저, 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
      }
    }
  }
}

(끝)






이전의:Java는 JDBC를 사용해 sqlite URL 문제를 연결합니다
다음:카프카는 수동으로 오프셋 오프셋을 설정합니다
게시됨 2021. 9. 22. 오후 8:45:47 |
배우기 시작해...
게시됨 2021. 9. 22. 오후 8:59:49 |
배우는 중이고, 오래된 철, 업데이트가 너무 많아서 따라가기 힘들다
게시됨 2023. 5. 16. 오전 11:22:31 |
RE: ASP.NET Core(八) 之 Swagger UI 默认参数的坑 [修改]
고급 모드
게시됨 2023. 5. 16. 오후 5:20:36 |
배우기 위해 배우세요
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com