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" * ),