python构造json格式的post请求访问flask server
最近需要用python去访问restful接口,想到可以顺便学习下flask,就写了一个简单的例子。
1.环境准备
环境: Linux / MacOS
准备工具: python2.7, pip
依赖模块: flask, urllib2, json
2.部署flask server
首先,用Flask搭建一个简单的server,Flask详细用法可以参考 Flask快速入门
cd到合适的代码目录
touch flask_server.py
vi flask_server.py
编写下面的代码
from flask import Flask,jsonify
from flask import request
app = Flask(__name__)
@app.route('/login',methods=['POST'])
def login():
print request.get_json()
json_data ={ 'success':'true' }
return jsonify(json_data)
if __name__ == '__main__':
app.run()
保存,退出,执行
python flask_server.py
打开server,这时server的root对应到了http://localhost:5000
,代码中的 POST 接口为http://localhost:5000/login
3.用python构造一个post请求
为了方便,新打开一个终端,到合适的代码路径下
touch post_request.py
vi post_request.py
编写代码
import urllib2
import json
def post():
url = "http://127.0.0.1:5000/login"
postDict = {
'username' : 'test',
'password' : '123',
'login' : 'I\'m login'
}
headers = {'Content-Type':'application/json'}
request = urllib2.Request(url, headers = headers, data = json.dumps(postDict))
request.get_method = lambda : "POST"
response = urllib2.urlopen(request)
print response.read()
if __name__ == '__main__':
post()
保存,退出,执行
python post_request.py
4.执行结果
server这边打印出request的结果
$ python flask_server.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
{u'username': u'test', u'login': u"I'm login", u'password': u'123'}
127.0.0.1 - - [04/Aug/2017 16:32:51] "POST /login HTTP/1.1" 200 -
client这边打印出返回的response
$ python request.py
{
"success": "true"
}