Wie definiere ich einen Standardwert für eine Eigenschaft in Swagger, die von der folgenden API generiert wird?
public class SearchQuery
{
public string OrderBy { get; set; }
[DefaultValue(OrderDirection.Descending)]
public OrderDirection OrderDirection { get; set; } = OrderDirection.Descending;
}
public IActionResult SearchPendingCases(SearchQuery queryInput);
Swashbuckle generiert als erforderlichen Parameter OrderDirection. Ich möchte es optional sein und dem Kunden den Standardwert mitteilen (nicht sicher, ob swagger dies unterstützt).
Ich mag es nicht, den Eigenschaftstyp auf Null zu setzen. Gibt es noch eine andere Möglichkeit? Idealerweise mit eingebauten Klassen ...
Ich benutze Swashbuckle.AspNetCore - https://docs.Microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger?tabs=visual-studio
Ich habe den Standard für den Parameter selbst immer wie folgt festgelegt:
public class TestPostController : ApiController
{
public decimal Get(decimal x = 989898989898989898, decimal y = 1)
{
return x * y;
}
}
So sieht das auf dem Swagger-Ui aus:
http://swashbuckletest.azurewebsites.net/swagger/ui/index#/TestPost/TestPost_Get
Im Anschluss an die Diskussion zu den Kommentaren habe ich Swagger-Net aktualisiert, um die DefaultValueAttribute
über Reflektion zu lesen.
public class MyTest
{
[MaxLength(250)]
[DefaultValue("HelloWorld")]
public string Name { get; set; }
public bool IsPassing { get; set; }
}
und so sieht der Swagger Json aus:
"MyTest": {
"type": "object",
"properties": {
"Name": {
"default": "HelloWorld",
"maxLength": 250,
"type": "string"
},
"IsPassing": {
"type": "boolean"
}
},
"xml": {
"name": "MyTest"
}
},
Der Quellcode von Swagger-Net ist hier:
https://github.com/heldersepu/Swagger-Net
Und der Quellcode für das Testprojekt ist hier:
https://github.com/heldersepu/SwashbuckleTest
Das Festlegen des Standardparameterwerts funktioniert folgendermaßen, wenn Sie dies in Ihrem Controller tun können
// GET api/products
[HttpGet]
public IEnumerable<Product> Get(int count = 50)
{
Conn mySqlGet = new Conn(_connstring);
return mySqlGet.ProductList(count);
}