⽤Python编写webAPI的教程
⾃从Roy Fielding博⼠在2000年他的博⼠论⽂中提出REST(Representational State Transfer)风格的软件架构模式
后,REST就基本上迅速取代了复杂⽽笨重的SOAP,成为Web API的标准了。
什么是Web API呢?
REST就是⼀种设计API的模式。最常⽤的数据格式是JSON。由于JSON能直接被JavaScript读取,所以,以JSON格式编写的REST风格的API具有简单、易读、易⽤的特点。
编写API有什么好处呢?由于API就是把Web App的功能全部封装了,所以,通过API操作数据,可以极⼤地把前端和后端的代码隔离,使得后端代码易于测试,前端代码编写更简单。
⼀个API也是⼀个URL的处理函数,我们希望能直接通过⼀个@api来把函数变成JSON格式的REST API,这样,获取注册⽤户可以⽤⼀个API实现如下:
@api
@get('/api/users')
def api_get_users():
users = User.find_by('order by created_at desc')
# 把⽤户的⼝令隐藏掉:
for u in users:
u.password = '******'
return dict(users=users)
所以,@api这个decorator只要编写好了,就可以把任意的URL处理函数变成API调⽤。
新建⼀个apis.py,编写@api负责把函数的返回结果序列化为JSON:
def api(func):
@functools.wraps(func)
def _wrapper(*args, **kw):
python安装教程非常详细
try:
r = json.dumps(func(*args, **kw))
except APIError, e:
r = json.dumps(dict(, data=e.data, ssage))
except Exception, e:
r = json.dumps(dict(error='internalerror', data=e.__class__.__name__, ssage))
return r
return _wrapper
@api需要对Error进⾏处理。我们定义⼀个APIError,这种Error是指API调⽤时发⽣了逻辑错误(⽐如⽤户不存在),其他的Error视为Bug,返回的错误代码为internalerror。
客户端调⽤API时,必须通过错误代码来区分API调⽤是否成功。错误代码是⽤来告诉调⽤者出错的原因。很多API⽤⼀个整数表⽰错误码,这种⽅式很难维护错误码,客户端拿到错误码还需要查表得知错误信息。更好的⽅式是⽤字符串表⽰错误代码,不需要看⽂档也能猜到错误原因。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。