JSクライアントの生成にswashbuckleを使用したasp.netコアプロジェクトがあります。 ページネーションを使用するには、X.PagedList nugetのPagedListを使用します。 コントローラの実装:Swagedbuckleの応答がIPagedListで間違っています<T>
[HttpGet]
[ProducesResponseType(typeof(IPagedList<Model>), 200)]
[ProducesResponseType(typeof(void), 500)]
public async Task<IActionResult> Get([FromQuery]query)
{
var response = await this.mediator.Send(query);
return Ok(response.Results); // results is IPagedList<Model>
}
結果JSONでは、次のようになります。
{
"count": 10,
"pageCount": 2,
"totalItemCount": 15,
"pageNumber": 1,
"pageSize": 10,
"hasPreviousPage": false,
"hasNextPage": true,
"isFirstPage": true,
"isLastPage": false,
"firstItemOnPage": 1,
"lastItemOnPage": 10,
"items": [
{
"guid": "dafa9d3b-9ee2-4cbc-b7d7-902b5bc9e887",
"name": "asdf",
"number": 1006,
}
]
}
何とか闊歩結果はモデルの配列のように見えると考えて:
[
{
"guid": "string",
"name": "string",
"number": 0,
}
]
私も
てみました[SwaggerResponse(200, Type = typeof(IPagedList<Model>))]
成功なし。
XPagedList 7.1.0 Swashbuckle.AspNetCore.Swagger 1.0.0
私は出力を上書きすることができます方法はありますか? コードが間違っていると、クライアントコードの生成が役に立たなくなります。
EDIT: ありカスタムJsonConverterがPagedList
services.AddMvc().AddControllersAsServices().AddJsonOptions(options =>
{
options.SerializerSettings.NullValueHandling = NullValueHandling.Include;
options.SerializerSettings.Converters.Add(new CustomIEnumerableConverter(new[] {"X.PagedList"}));
});
ためである。しかし、私は理解しSwashbuckleが同じJsonSerializerを使用する必要があります。
なぜこれらのプロパティをプライベートにする必要がありますか?私は問題なくコントローラにアクセスできます。セッターはありませんがゲッターがあります – Andre
おそらく私は間違っているかもしれませんが、プライベートではないかもしれませんが、私の例では表示されません... – HelderSepu
私はクローンできるGitHubに関する完全なプロジェクトはありますか? _これは私のものです:https://github.com/heldersepu/Swashbuckleテスト – HelderSepu