目前Web应用这块,restufl API用得非常普遍,因为,你手上的前端设备五花八门,各种系统的手机,pad等等,而且网站和手机APP经常会有需要资源共享的时候。
如果网站做个app,手机端再独立一个app,要保持2者同步,估计做开发的要做死了。
所以,RESTFUL API提出了一个概念,就是资源为上,通俗地讲:就是,我有一个资源A,可以作为接口来提供出来,那么,前端设备的B,C,D 都可以通过申请这个API接口的方式,来进行获取资源,而最后显示画面如何渲染,让客户看到是怎么样的一个样子,那是前端的事情了。
学习API之前,有两个前置技能需要去了解下,一个是JSON数据格式,另外一个是curl或者HTTPie这样的http调试工具,我这里用的是HTTPie
最简单的Web API
先来看看通过Python Flask做一个非常简单的Web API接口范例
from flask import Flask,jsonify
app = Flask(__name__)
tasks =[
{
'id':1,
'title': u'Buy groceries',
'description': u'Milk, Cheese, Pizza, Fruit, Tylenol',
'done': False
},
{
'id': 2,
'title': u'Learn Python',
'description': u'Need to find a good Python tutorial on the web',
'done': False
}]
@app.route('/')
def index():
return 'Hello,world!'
@app.route('/todo/api/v1.0/tasks',methods=['GET'])
def get_tasks():
return jsonify({'tasks':tasks})
如上面代码,当你请求 /todo/api/v1.0/tasks 的时候,通过路由get_tasks,就能返回当前所有的数据信息
他是通过jsonify来进行返回的,这里需要注意的是,有2种方法可以返回json数据,一个是jsonify,还有一个是json.dumps()
那么2者有什么区别呢?可以看下图
jsonify直接返回的是Content-type:application/json的响应对象(Response对象)
json.dumps返回的,则是Content-type:text/html,charset=utf-8的HTML格式
我们可以看下jsonfiy的官方解释
来看下效果图及两者的区