mam API, które albo zwraca następującą odpowiedź na sukces:Swagger - Określ opcjonalnej właściwości obiektu lub wiele odpowiedzi
{
"result": "success",
"filename": "my-filename.txt"
}
lub coś poniżej momencie awarii:
{
"result": "error",
"message": "You must specify the xxx parameter."
}
Obiekt nazwa pliku jest określone tylko, jeśli żądanie zakończyło się sukcesem, ale w przypadku błędu wystąpił komunikat. Oznacza to, że komunikat i właściwości pliku są "opcjonalne", ale właściwość wyniku jest wymagana.
Próbowałem definiowania ten obiekt odpowiedzi w definicji, jak pokazano poniżej:
"my_response_object": {
"type": "object",
"properties": {
"result": {
"type": "string",
"description": "value of 'success' or 'error', indicated whether was successful",
"required": true
},
"message": {
"type": "string",
"description": "an error message if there was an issue",
"required": false
},
"filename": {
"type": "string",
"description": "the filename to return if the request was successful",
"required": false
}
}
}
Ale wydaje się, że przechwala nie lubi „wymagane” atrybut i pojawi się następujący komunikat o błędzie:
Kiedy patrzę na przykład z przekrętów, mają one następujący układ, w którym istnieją dwie różne definicje odpowiedzi zamiast jednej.
"responses": {
"200": {
"description": "Profile information for a user",
"schema": {
"$ref": "#/definitions/Profile"
}
},
"default": {
"description": "Unexpected error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
Mogłem to zrobić, ale wygląda na to, że nie można mieć wielu odpowiedzi na 200 kodów błędu. Czy to oznacza, że do wszystkich odpowiedzi na błędy trzeba użyć "domyślnego", a dla wszystkich błędnych odpowiedzi można mieć tylko jedną strukturę, czy też istnieje sposób na określenie, że niektóre atrybuty są opcjonalne w definicjach?
Podobnie jak uwaga, fraza "wiele odpowiedzi na kod błędu 200" brzmi podejrzanie. Dlaczego zwracasz błędy pod 2XX? – Tommy