次のAPIから生成されたswaggerのプロパティのデフォルト値を定義するにはどうすればよいですか?
public class SearchQuery
{
public string OrderBy { get; set; }
[DefaultValue(OrderDirection.Descending)]
public OrderDirection OrderDirection { get; set; } = OrderDirection.Descending;
}
public IActionResult SearchPendingCases(SearchQuery queryInput);
Swashbuckleは、必須パラメーターとしてOrderDirectionを生成します。私はそれをオプションにして、クライアントにデフォルト値を示したいと思います(swaggerがこれをサポートしているかどうかはわかりません)。
プロパティタイプをNULL可能にするのは好きではありません。他のオプションはありますか?組み込みクラスを使用するのが理想的です...
Swashbuckle.AspNetCoreを使用します- https://docs.Microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger?tabs=visual-studio
私は常に次のようにパラメータ自体にデフォルトを設定しています:
public class TestPostController : ApiController
{
public decimal Get(decimal x = 989898989898989898, decimal y = 1)
{
return x * y;
}
}
Swagger-uiでの表示は次のとおりです。
http://swashbuckletest.azurewebsites.net/swagger/ui/index#/TestPost/TestPost_Get
リフレクションを介してDefaultValueAttribute
を読み取るために Swagger-Net を更新したコメントに関する議論に続いて、使用しているサンプルクラスを次に示します。
public class MyTest
{
[MaxLength(250)]
[DefaultValue("HelloWorld")]
public string Name { get; set; }
public bool IsPassing { get; set; }
}
swagger jsonは次のようになります。
"MyTest": {
"type": "object",
"properties": {
"Name": {
"default": "HelloWorld",
"maxLength": 250,
"type": "string"
},
"IsPassing": {
"type": "boolean"
}
},
"xml": {
"name": "MyTest"
}
},
Swagger-Net のソースコードは次のとおりです。
https://github.com/heldersepu/Swagger-Net
また、テストプロジェクトのソースコードは次のとおりです。
https://github.com/heldersepu/SwashbuckleTest
コントローラーでデフォルトのパラメーター値を設定できる場合は、このように機能します
// GET api/products
[HttpGet]
public IEnumerable<Product> Get(int count = 50)
{
Conn mySqlGet = new Conn(_connstring);
return mySqlGet.ProductList(count);
}