我是一个构建http api的初学者,我似乎对restapi和webapi之间的区别感到困惑。我在网上读到的越多,就越觉得困惑。我想菲尔丁和这个链接有同样的问题http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
我在工作中构建了一个http api,认为我构建了一个restapi,就像我读到的任何地方一样,他们正在构建web/httpapi并调用它rest。
当我发现一个遵循hateoas原则的api是一个githubrestapihttps://api.github.com。我在github尝试使用它作为我的用户名(gethttps://api.github.com/users/vvs14),它按照hateoas原则返回了所有相关链接。
它是现实世界中最接近rest规范imho的api之一。虽然我不知道哪个uri支持对它执行什么操作,如果我是rest api的使用者,如何找到它,或者如果我是api的宿主,如何告诉使用者?
一个好的博客是https://www.e4developer.com/2018/02/16/hateoas-simple-explanation/。
所有其他的例子都在大多数博客中给出,只是告诉使用json作为rest api,把所有东西作为资源作为restapi,并使用http动词将crud操作作为restapi。我觉得这些都不是真的。
在我的工作中,我使用sendgrid的web api向客户发送电子邮件,他们称之为webapi,而不是rest,我认为这是非常正确的。
有谁能举例说明一下这两者的区别吗?
如果github api是restapi的一个正确示例,那么我们如何知道哪个uri支持哪些作为媒体类型的操作呢?
最佳答案
唯一能告诉您它支持什么的资源是资源本身。一个资源提供给你的关于其他资源支持的任何信息都是纯粹的咨询。找到答案的唯一正确方法是尝试它并处理成功/失败。这是因为接受的请求可能会一分钟一分钟地改变(例如删除)。
如果您的api可以在web浏览器中导航和提交表单-一个除了起始url和html格式之外对api一无所知的客户机-并且假设text/html是api的可协商表示,那么它就是restful。它可以是restful,即使它在浏览器中不可导航,但这很难演示。
关于rest - REST API与Web API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55482173/