应用程序编程接口(API)

我为此应用程序构建的所有功能都只适用于特定类型的客户端:Web浏览器。 但其他类型的客户端呢? 例如,如果我想构建Android或iOS APP,有两种主流方法可以解决这个问题。 最简单的解决方案是构建一个简单的APP,仅使用一个Web视图组件并用Microblog网站填充整个屏幕,但相比在设备的Web浏览器中打开网站,这种方案几乎没有什么卖点。 一个更好的解决方案(尽管更费力)将是构建一个本地APP,但这个APP如何与仅返回HTML页面的服务器交互呢?

这就是应用程序编程接口(API)的能力范畴了。 API是一组HTTP路由,被设计为应用程序中的低级入口点。与定义返回HTML以供Web浏览器使用的路由和视图函数不同,API允许客户端直接使用应用程序的资源,从而决定如何通过客户端完全地向用户呈现信息。 例如,Microblog中的API可以向用户提供用户信息和用户动态,并且它还可以允许用户编辑现有动态,但仅限于数据级别,不会将此逻辑与HTML混合。

如果你研究了应用程序中当前定义的所有路由,会注意到其中的几个符合我上面使用的API的定义。 找到它们了吗? 我说的是返回JSON的几条路由,比如第十四章中定义的/translate路由。 这种路由的内容都以JSON格式编码,并在请求时使用POST方法。 此请求的响应也是JSON格式,服务器仅返回所请求的信息,客户端负责将此信息呈现给用户。

虽然应用程序中的JSON路由具有API的“感觉”,但它们的设计初衷是为支持在浏览器中运行的Web应用程序。 设想一下,如果智能手机APP想要使用这些路由,它将无法使用,因为这需要用户登录,而登录只能通过HTML表单进行。 在本章中,我将展示如何构建不依赖于Web浏览器的API,并且不会假设连接到它们的客户端的类型。

本章的GitHub链接为:Browse, Zip, Diff.

作者:珊瑚
链接:https://www.jianshu.com/p/8bcf554ddc31
來源:简书

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 来自《适合比成功更重要》。 R·阅读原文片段 《适合比成功更重要》,143页 自我激励也是情商的关键因素之一。自我...
    隐士_1b52阅读 154评论 0 0
  • 这是【心灵对话·写作】第5篇练笔 2016年年末的时候,开始一点一点把自由书写落到实处,起初,只是因为冉冉的微课分...
    若涵印迹阅读 172评论 1 0
  • 其实我们早该分开,到现在彼此都勉强维系关系,至于要问为什么不干脆一点?我想原因不过是想有个伴某些时刻有人陪,即使是...
    曦月曦月阅读 155评论 0 0