REST APIクライアントを生成するために、Swashbuckle.AspNetCore(3.0.0)の助けによって作成されたAutorestおよびSwaggerドキュメントを使用しようとしています。
生成されたSwaggerのドキュメントは、操作名が本当にNiceでないことを除いて、正しいようです。
"/api/Addresses/{id}": {
"get": {
"tags": [ "Address" ],
"operationId": "ApiAddressesByIdGet",
"consumes": [],
"produces": [],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"type": "string",
"format": "uuid"
}
],
"responses": { "200": { "description": "Success" } }
},
多くの記事とSwashBuckle.AspNetCoreの公式ドキュメントで、属性を使用してコントローラーメソッドを次のように装飾できることを確認しました。
[HttpGet]
[Produces("application/json")]
[ProducesResponseType((int)HttpStatusCode.NotFound)]
[ProducesResponseType(typeof(List<AddressDto>), (int)HttpStatusCode.OK)]
[SwaggerOperation("GetAllAdresses")]
public async Task<IActionResult> GetAllAsync()
{
....
}
残念ながら、エラーが発生しました:SwaggerOperationAttributeが見つかりませんでした!
インストールされているnugetパッケージを確認しました。
誰かが私を助けることができますか?お願いします
今日これに遭遇しました。 V3.0.0に追加されたばかりの次のnugetパッケージを追加する必要がありました。
Swashbuckle.AspNetCore.Annotations
重大な変更が説明されています ここ
また、Startup.csまたはSwagger拡張に以下を追加する必要があることにも注意してください。
AddSwaggerGen(c => { ... c.EnableAnnotations(); })
もう1つのオプションは、Name
フィルターのHttpGet
プロパティを次のように設定することです。
[HttpGet(Name = "GetAllAdresses")]
[Produces("application/json")]
[ProducesResponseType((int)HttpStatusCode.NotFound)]
[ProducesResponseType(typeof(List<AddressDto>), (int)HttpStatusCode.OK)]
[SwaggerOperation("GetAllAdresses")]
public async Task<IActionResult> GetAllAsync()
{
....
}