【发布时间】:2016-03-25 01:10:05
【问题描述】:
当前的 Swagger 规范声称 Swagger 用于描述和记录 RESTful API。我认为情况并非如此,而是我认为 Swagger 可用于简单地描述 HTTP API,原因如下:
- Swagger 规范包含
Path和Definition等元素,但它们没有明确映射到 REST data elements 等资源、表示和媒体类型。我的想法是,为了有效地描述 REST API,您应该需要在 API 的上下文中定义显式的 REST 数据元素。 - 超链接不是 Swagger 规范中的第一类对象,因此超链接及其关键描述属性链接关系很容易被忽略。事实上,根本没有提到超链接。
- HTTP 路径位于前端和中心,这似乎明显违反了菲尔丁在他著名的blog post 中提出的观点:
REST API 不得定义固定的资源名称或层次结构(客户端和服务器的明显耦合)
基本上,我认为使用 Swagger 2.0 规范定义的 API 会引导您设计一个不受 HATEOAS 约束的 API,这会违反 REST。
这是正确的还是我遗漏了什么?
【问题讨论】:
-
为什么这个问题有这么多反对票?这是一个有效且很好的问题。如果您投反对票,请给出理由。
-
@Tommy 感谢您的解释。我实际上并不熟悉 Progammers SE。从本质上讲,这是一个软件架构问题,因此从技术上讲,Progammers SE 更合适。但是,我看到很多这样的问题在 SO 上很受欢迎,所以看到这么多反对票,我仍然感到惊讶。
标签: api rest http swagger swagger-2.0