webentwicklung-frage-antwort-db.com.de

Swagger-Standardwert für den Parameter

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

7
Liero

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


AKTUALISIEREN

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

3

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);
}
2
Colbs