当然这里要填真实的appid和appsecret数据,才能查得到。
返回
{
"air":"99",
"air_level":"良",
"air_tips":"空气好,可以外出活动,除极少数对污染物特别敏感的人群以外,对公众没有危害!",
"pm25":"66",
"pm25_desc":"良",
"pm10":"147",
"pm10_desc":"良",
"o3":"29",
"o3_desc":"优",
"no2":"62",
"no2_desc":"良",
"so2":"11",
"so2_desc":"优",
"kouzhao":"无需戴口罩",
"waichu":"适宜外出",
"kaichuang":"适宜开窗",
"jinghuaqi":"关闭净化器",
"cityid":"101120101",
"city":"济南",
"cityEn":"jinan",
"country":"中国",
"countryEn":"China"
}
可以简单的理解,Restful风格一种使用HTTP+JSON实现的提供一种对外API的方式。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask
app = Flask(__name__)
@app.route('/GoogNight')
def goog_night():
return "GoogNight!"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=9090)
只需要执行下
[root@localhost pys]# python goodnight.py
就启动了一个http服务。
测试下,在浏览器地址栏输入http://x.x.x.x:9090/GoogNight,
就会显示:GoogNight!
2.2 工程化
接下来我们的接口可能越来越多,放到一个文件里不再能满足我们的需求了,那么我们可以使用Blueprint来把各个接口(函数/route)分布到各个文件中。
拼装字符串,python也有成熟的库,我们可以使用jsonify完成这部分工作。
再使用request解析请求参数。经过这些我们就,可以生成一个简单的web api服务。
server.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask, abort, request, jsonify
from get_task import get_task
from datas import tasks
app = Flask(__name__)
app.register_blueprint(get_task, url_prefix="/get_task/")
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8383, debug=True)
数据
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 测试数据暂时存放
tasks = [{"id": 123, "info": "test task"}, {"id": 124, "info": "task 22"}]
实现接口
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask, abort, request, jsonify
from flask import Blueprint
from datas import tasks
get_task = Blueprint('get_task', __name__)
@get_task.route('/get', methods=['GET'])
def get_tasks():
if not request.args or 'id' not in request.args:
# 没有指定id则返回全部
return jsonify(tasks)
else:
return jsonify({'result': 'not found'})
@get_task.route('/post', methods=['POST'])
def get_tasks_():
if not request.args or 'id' not in request.args:
return jsonify(tasks)
else:
return jsonify({'result': 'not found'})
2.3 可能会出现CORS问题,解决方法如下,在python脚本中添加如下代码
from flask_cors import CORS
CORS(get_task, supports_credentials=True)
http://x.x.x.x:8383/get_task/get
outputs
[
{
"id": 123,
"info": "test task"
},
{
"id": 124,
"info": "task 22"
}
]
[root@localhost ~]# curl -H “Content-Type: application/json” -X POST “http://127.0.0.1:8383/get_task/post”
[
{
"id": 123,
"info": "test task"
},
{
"id": 124,
"info": "task 22"
}
]
本文简略的介绍了使用flask框架搭建restful服务的过程,文中的例子都是可运行。更多细节,可参考它们的官网介绍。