Swagger UI 2.1 застрял " выборка списка ресурсов"
У меня есть RESTful API, который я недавно создал, и я не буду помнить, как использовать его через несколько месяцев. Я решил документировать свой API с помощью Swagger, однако я схожу с ума.
Я http://editor.swagger.io/, чтобы создать YAML файл, который потом конвертировать в JSON-файла развязностью можете использовать. Когда я помещаю файл в Swagger UI, он просто застревает на fetching resource list: localhost/swagger.json
, а консоль говорит Uncaught TypeError: Cannot read property '$ref' of undefined
.
Я использую версию 2.1.0-alpha.5 из Swagger UI.
Здесь это мой файл спецификации:
swagger: '2.0' info: title: TITLE description: BLAH, BLAH, BLAH, ETC version: "1.0b" host: api.example.com schemes: - http basePath: /v1 produces: - application/json paths: /match.json: get: #summary: Match Data description: Used for getting data about a match parameters: - name: id in: query description: The match ID of from a game required: true type: integer format: int32 - name: key in: query description: API key used for authentication. required: true type: string responses: 200: description: Returns match data schema: type: array items: $ref: '#/definitions/MatchData' default: description: Unexpected error schema: $ref: '#/definitions/Error' definitions: MatchData: properties: info: type: integer format: int64 description: General information about the match time: type: integer format: int64 description: Information about the start/end time stats: type: array format: int64 description: Stats about the match Error: required: - errorID - message properties: errorID: type: string description: Error ID. message: type: string description: Information about the error.
3 ответа:
Я проверил вашу спецификацию, и хотя я не получаю ту же ошибку, что и вы, спецификация действительно недействительна.
Если вы посмотрите на
#/definitions/MatchData/properties/stats
, вы увидите, что вы определяетеtype: array
, но вы не предоставляете свойство items рядом с ним, чтобы сказать, какой это массив (и это обязательно). Возможно, вы намеревались использоватьtype: integer
, как свойства над ним, которые идут вместе сformat: int64
.Поскольку я не знаю, что вы намеревались предоставить, трудно дать точное решение, но если вы добавите комментируя то, что вы намеревались сделать, я мог бы дать более подробный ответ.
После некоторого дополнительного тестирования я обнаружил, что в пользовательском интерфейсе есть ошибка. После внесения этой модификации и загрузки спецификации сама операция не будет расширяться, если вы не нажмете на ссылку
Expand Operations
. Я открыл выпуск об этом, не стесняйтесь следовать ему там.
Эта проблема может быть вызвана некоторыми ошибками отступов в файле yaml, которые на самом деле не появились в Редакторе Swagger. Проверьте все ваши определения и то, отображаются ли они должным образом в предварительном просмотре, который вы можете увидеть в Редакторе Swagger (особенно проверьте MatchData).
Вы также можете попробовать дать:
responses: 200: description: Returns match data schema: type: array items: schema: $ref: '#/definitions/MatchData'
В нашем случае мы использовали Swagger-php, и у нас есть: * @SWG\ответ( * отклик=200, * описание= " ответ приложения" * @\Схема РПД( * тип= " массив" * ) * ),
Но мы пропустили "* @SWG\Items(ref= "# / definitions/pet")". После удаления "@SWG\Schema (", он работает, например,
* @SWG\Response( * response=200, * description="app response" * ),