Я использую asp.net core 3 и swashbuckle с конфигурацией по умолчанию, и у меня есть параметр dto со строкой, которую я хочу не обнулять. Как мне этого добиться? Обратите внимание, Обязательные и обнуляемость являются отдельными проблемами в swagger.
Он также использует C # 8 и не допускает обнуления, поэтому компилятор должен уже пометить свойство как не обнуляемое. Понятно, что Swashbuckle не был обновлен для учета этого (и, возможно, не может), но я хотел бы иметь возможность каким-то образом переопределить сгенерированные метаданные.
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) {
}
Я попытался сделать это Обязательным,Я также попытался добавить аннотации newtonsoft, но, похоже, ни одна из них этого не сделала.
Соответствующий бит генерируемого документа:
"MyDto": {
"required": [
"testProp"
],
"type": "object",
"properties": {
"testProp": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
}
Обратите внимание, что строковый параметр имеет непосредственное значениеПараметр не генерирует атрибут NULL. Например,
[HttpPost("testPost")]
public void Post([FromBody] [Required] string testProp) {
}
будет генерировать
"/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"
}
}
}
},