首先解释一下什么叫 API :
应用程序接口(英语:Application Programming Interface,简称:API ),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。由于近年来软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。(来自维基百科)
API 在多端中使用的更节省资源。网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备……)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行。
关于RESTful的相关知识,参考设计一套良好 REST API
为什么选择 Tornado ?
在 Python 的众多WEB框架中,Tornado 它是异步非阻塞服务器,而且速度特别快。Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。
最基础的尝试
主要实现的是一个ArticleHandler
,其中包含GET
、POST
、 PUT
、 DELETE
,实现基本的四种请求方式。当然,这是最简单的API设计的实现。
URL都是: /api/article[/id] POST请求不需要携带id,GET请求也可以不携带,但是意义不同
API设计
这里的API设计是不太合理的,可以说URL的表现基本合理,但是 数据的表现形式是不太合理的,等待下一步进行优化处理。
GET
请求:/api/article
,则返回一个列表[{...}, {...}, ...]
;GET
请求:/api/article/id
,如果 id 有效,且查找的到数据,则返回{...}
;否则返回{}
;POST
请求:/api/article
, 需要携带参数,json 形式的 data 进行创建数据,如果参数错误或创建失败,返回{"error": 1, "code": ...}
;否则返回创建的数据{...}
;DELETE
请求:/api/article/id
,如果id有效,且删除数据,并返回删除的数据{...}
;否则返回{"error": 1, "code": ...}
;PUT
请求:/api/article/id
,需要携带参数,json形式的data进行修改数据,需要数据的哪项值就可以传入哪项值,如果id有效且参数有效,则返回修改之后的数据{...}
,否则返回{}
;
详见代码
** url
设计 **
1 | urls = [ |
** ApiHandler
实现 **
1 | # -*- coding: utf-8 -*- |
其他tornado的配置自行补充,这里不说明配置啦
总结
其实具体的API设计原则需要有各个项目组或者开发团队进行设计和统一规定,没有具体的标准之说,具体的取舍,在项目开发中就会体现处其中的好处。本文是首次接触API的设计原则问题,只是在这里记录自己现在的想法,但是 不能保证以上所有的论述和实现方式都是合理的 ,仅供自己的学习和参考,等后期的深入,本人会继续更新最新的文章,更新其中不足的地方,再次共勉!
解决用户登录的问题
参考项目代码,重新整理了认证的部分,发现tornado自带的功能已经很强大啦,这不在这里补上认证的部分,其实原理很简单:
用户登录之后返回一个token的值,然后再以后的请求头部中需要携带该token的值,来看看代码:
1 |
|
再次总结
这里虽然实现了登录授权的问题,但是没有实现的是分级的问题,即不同用户的权限不同的处理。后期再处理吧。目前所有的代码请参考https://github.com/suAdminWen/restapi