我有一个最近创建的RESTful API,几个月后我将不记得如何使用它。我决定使用Swagger记录我的API,但是我疯了。
我使用http://editor.swagger.io/创建了YAML文件,然后将其转换为Swagger可以使用的JSON文件。当我将文件放入Swagger UI时,它只是停留在fetching resource list: localhost/swagger.json
上,控制台显示Uncaught TypeError: Cannot read property '$ref' of undefined
。
我正在使用Swagger UI的2.1.0-alpha.5版本。
这是我的规范文件:
Swagger :“2.0”
信息:
标题:TITLE
说明:BLAH,BLAH,BLAH,ETC
版本:“1.0b”
主持人:api.example.com
方案:
-http
basePath:/v1
产生:
-应用程序/json
路径:
/match.json:
得到:
#summary:匹配数据
描述:用于获取有关比赛的数据
参数:
-名称:id
在:查询
描述:游戏的比赛ID
必填:true
类型:整数
格式:int32
-名称:键
在:查询
描述:用于身份验证的API key 。
必填:true
类型:字符串
回应:
200:
描述:返回匹配数据
架构:
类型:数组
项目:
$ ref:'#/definitions/MatchData'
默认:
说明:意外错误
架构:
$ ref:'#/definitions/Error'
定义:
MatchData:
特性:
信息:
类型:整数
格式:int64
描述:有关比赛的一般信息
时间:
类型:整数
格式:int64
描述:有关开始/结束时间的信息
统计资料:
类型:数组
格式:int64
描述:比赛数据
错误:
必需的:
-errorID
- 信息
特性:
错误编号:
类型:字符串
描述:错误ID。
信息:
类型:字符串
描述:有关错误的信息。
最佳答案
我已经测试了您的规范,虽然没有遇到与您相同的错误,但该规范确实无效。
如果查看#/definitions/MatchData/properties/stats
,则会看到您定义了type: array
,但是您没有在其旁边提供“items”属性来说明它是哪个数组(这是强制性的)。您可能打算像上面的属性一样使用type: integer
,它与format: int64
一起使用。
由于我不知道您打算提供什么,因此很难给出一个准确的解决方案,但是如果您添加了您打算做什么的评论,我可以提供更详细的答案。
经过一些额外的测试,我发现UI中存在一个错误。进行修改并加载规范后,除非单击Expand Operations
链接,否则操作本身不会扩展。我已为此打开了一个issue,请随时在此处关注。
关于json - Swagger UI 2.1卡住 "fetching resource list",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27046475/