J'utilise ASP.NET Core 3 et Swashbuckle avec la plupart des configurations par défaut et j'ai un paramètre DTO avec une chaîne sur celle-ci que je veux être non nullable. Comment puis-je atteindre cet objectif? Remarque, requis et la nullabilité sont des préoccupations distinctes dans Swagger.
Il utilise également C # 8 et les éléments non nullables, le compilateur devrait donc annoter la propriété comme non involonible déjà. Il est compréhensible que Swashbuckle n'ait pas été mis à jour pour le prendre en compte (et peut-être que je ne peux pas), mais j'aimerais pouvoir remplacer la métadonnée générée en quelque sorte.
class MyDto {
[Required]
// I want this to show as non-nullable in the swagger documentation (and ideally also be non-nullable in the binding)
public string TestProp { get; set; }
}
[HttpPost]
public void Post([FromBody] MyDto requestModel) {
}
J'ai essayé de le faire. J'ai également essayé d'ajouter les annotations de Newtonsoft, mais rien d'entre eux ne semblait le faire.
Bit pertinent de Swagger Doc qui est généré:
"MyDto": {
"required": [
"testProp"
],
"type": "object",
"properties": {
"testProp": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
}
Notez que le paramètre de chaîne directement sous forme de paramètre ne génère pas l'attribut nullable. Par exemple.
[HttpPost("testPost")]
public void Post([FromBody] [Required] string testProp) {
}
va générer
"/api/test/testPost": {
"post": {
"tags": [
"Test"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "string"
}
},
"text/json": {
"schema": {
"type": "string"
}
},
"application/*+json": {
"schema": {
"type": "string"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Success"
}
}
}
},
lisez sur la documentation pour RequiredAttribute
:
Spécifie qu'une valeur de champ de données est requise.