til : NSWAGで必要な&オプションのパラメータを生成する


私はnswagを使用してそれぞれのswaggerページを生成します.NETコアサービス、そして私もnswagを使用して生成する.そのサービスへの通話時に使用する他のサービスのNET標準プロキシクライアント.
しかし、生成されたクライアントのシグネチャは、どのパラメータが必要であり、どのパラメータがNULLであるかを記述する際に正確ではありません.これはそれを修正する方法です.
これは終点の例です.UserIDと年齢は必須であり、null許容できません.favenumberはオプションで、null可能です.
    [HttpGet()]
    public ActionResult GetValues(
        FromHeader] string userId,
        [FromQuery] int age,
        [FromQuery] int? faveNumber)
    {
        return Ok();
    }
生成されたクライアントコードに次のメソッドシグネチャを作成します.
GetValues(string userId, int age, int? faveNumber = null)

スパーガ.JSON
まず、エンドポイントのエンドポイントパラメータを適切に記述する必要があります.JSONはパラメータを正しく説明します:
    "parameters": [
      {
        "name": "userId",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string"
        },
        "x-position": 1
      },
      {
        "name": "age",
        "in": "query",
        "required": true,
        "schema": {
          "type": "integer",
          "format": "int32"
        },
        "x-position": 2
      },
      {
        "name": "faveNumber",
        "in": "query",
        "schema": {
          "type": "integer",
          "format": "int32",
          "nullable": true
        },
        "x-position": 3
      }
    ],
必要と許容可能なフィールドは、適切に生成されたクライアントを取得するキーです.使用可能な(?)nullableなパラメータを指定し、含まなければならないパラメータを示すためにbindrequiredを使用します.
    [HttpGet()]
    public ActionResult GetValues(
        [BindRequired][FromHeader] string userId,
        [BindRequired][FromQuery] int age,
        [FromQuery] int? faveNumber)
    {
        return Ok();
    }
}
起動時に.csはデフォルトのnull参照をnotnullに設定し、必須のフィールドがNULLを値として受け入れるのを防ぎます.
    services.AddOpenApiDocument(settings =>
{
settings.DefaultReferenceTypeNullHandling = NJsonSchema.Generation.ReferenceTypeNullHandling.NotNull;
});


クライアントの生成
今、我々は適切なswaggerを持っている.JSONは、NSWAGクライアントを構築するために使用します.
「オプションのパラメータ生成」を選択してください.次のメソッドを使用して生成されたクライアントを終了します.
    public async System.Threading.Tasks.Task<FileResponse> Values_GetValuesAsync(
string userId,
int age,
int? faveNumber = null))


概要
NSWAGクライアントを生成するときは、クライアント世代の設定でプレイしないでください.正しく生成されているJSONは、コードで構築したエンドポイントを表します.
正しいswaggerのビルドJSONは正しいクライアントを構築する鍵です.