Спецификация JSON:
"responses": { "200": { "description": "Успешный ответ сервиса", "schema": { "$ref": "#/definitions/BaseResponse" }, "examples": { "application/json": { "status": true, "response": { "$ref": "#/definitions/Product" }, "errors": null } } } }
Результат:
Но мне нужно:
{ "status": true, "response": { "ProductNumber": "number", "Barcode": "number", "Length": 12, "Width": 34, "Height": 423, "Volume": 1232 } }, "errors": null }
Как я могу использовать $ refs в массиве example для ответа на специальный формат? Это типичный случай, но я не могу найти для него документацию. Благодарим вас за отзыв.
Примеры Inline не поддерживают $ref
– пример должен быть полным примером:
"responses": { "200": { "description": "Успешный ответ сервиса", "schema": { "$ref": "#/definitions/BaseResponse" }, "examples": { "application/json": { "status": true, "response": { "ProductNumber": "number", "Barcode": "number", "Length": 12, "Width": 34, "Height": 423, "Volume": 1232 }, "errors": null } } } }
Вместо использования responses.<code>.examples
вы можете указать значения примера в своей схеме BaseResponse
, и пользовательский интерфейс Swagger будет использовать их вместо этого.
Например, вы можете добавить полный пример в свою схему BaseResponse
:
"definitions": { "BaseResponse": { "type": "object", "properties": { "status": { "type": "boolean" }, ... }, "example": { // <------ schema-level example "status": true, "response": { "ProductNumber": "number", "Barcode": "number", "Length": 12, "Width": 34, "Height": 423, "Volume": 1232 }, "errors": null } } }
или используйте примеры уровня собственности:
"definitions": { "BaseResponse": { "type": "object", "properties": { "status": { "type": "boolean", "example": true // <------ }, "response": { "$ref": "#/definitions/Product" }, "errors": { "example": null // <------ } } }, "Product": { "type": "object", "properties": { "ProductNumber": { "type": "string", "example": "number" // <------ }, "Length": { "type": "integer", "example": 12 // <------ }, ... } } }
Я хотел бы отметить, что "errors": null
и "example": null
в действительности не действительны в OpenAPI 2.0 (fka Swagger), поскольку он не поддерживает типы с нулевым значением. Нулевые типы поддерживаются только в OpenAPI 3.0.