我花了一整天时间阅读菲尔丁关于REST的着名论文.它在结论部分说:
REST,一种用于分布式超媒体系统的新颖架构风格....
虽然基于Web的应用程序可以包括对其他交互方式的访问,但其协议和性能问题的核心焦点是分布式超媒体.REST仅详细说明了体系结构中被认为是Internet规模分布式超媒体交互必不可少的部分.
根据维基百科:
超媒体是超文本一词的扩展,是一种非线性信息媒介,包括图形,音频,视频,纯文本和超链接.
所以在我看来,REST是有意义的web-based content-intensive system
.但显然RESTful API
已被buzzword
用于几乎所有地方web service
.
那么这种过度使用了吗?还是误用?
参考文献:
RESTful API,最大的谎言.
RESTful编程究竟是什么?
在讨论Cookies时,菲尔丁着名的论文中"超媒体数据格式"是什么意思
我认为JSON不是媒体而是文字或视频.所以从本质上讲,JSON中表示的序列化对象是一种媒介.
现在,"超媒体"是在语义上链接在一起的媒体.您可以通过包含链接:HAL或HATEAOS 来制作JSON超媒体.
在此,您将相关资源的链接添加到JSON文档.示例:
{ "content": [ { "price": 499.00, "description": "Apple tablet device", "name": "iPad", "links": [ { "rel": "self", "href": "http://localhost:8080/product/1" } ], "attributes": { "connector": "socket" } }, { "price": 49.00, "description": "Dock for iPhone/iPad", "name": "Dock", "links": [ { "rel": "self", "href": "http://localhost:8080/product/3" } ], "attributes": { "connector": "plug" } } ], "links": [ { "rel": "product.search", "href": "http://localhost:8080/product/search" } ] }
人们争辩说,没有链接,JSON不是超媒体.
我也不想尝试将每个API都塞进REST中.并非每个API都与资源有关,因此如果您的API代表RPC,请将其称为RPC:RPC API.