使用flask开发RESTful架构的api服务器端(3)–简单的RESTful services
上一章中已经介绍了如何安装和使用flask,下面开始搭建一个RESTful架构的services了,RESTful架构在第一章中就已经进行了介绍,简单的说我们要用HTTP的4个方法来操作我们的服务器资源,这章的任务就是上flask创建4个HTTP方法的动作,这里使用学生信息库为用例;
学生信息资源为:
资源名称 | 资源类型 |
学生号 | int |
姓名 | str |
年龄 | int |
籍贯 | str |
平均分 | float |
第一步先将数据保存在内存中,使用数据库进行信息存储在之后章节再继续介绍;
1、创建flask服务器
首先与第二章的用例相同创建一个flask的服务器:
form flask import Flask app = Flask(__name__) @app.route('/') def welcome(): return "Welcome to studement management system!" app.run(host="192.168.1.1", post=1234, debug=True)
这样就在192.168.1.1的1234端口上开启了监听服务器了,此时服务端只对’/’请求有响应,其它路径的响应都会返回404错误码;
2、POST:上传信息
HTTP4个方法的第一个是POST,通常用来上传信息:
from flask import jsonify from flask import request students = [] @app.route('/student/', methods=['POST']) def add_student(): if not request.json or not 'id' in request.json or not 'name' in request.json or not 'age' int request.json or not 'birthplace' in request.json or not 'grade' in request.json: abort(400) student = { 'id' : request.json['id'], 'name' : request.json['name'], 'age' : request.json.get('age', ""), 'birthplace' : request.json.get('birthplace', ""), 'grade' : request.json['grade'] } students.append(student) return "success"
使用flask的request方法可以很方便的得到请求数据,使用json来进行数据传输也是非常好用的方法,使用curl命令来进行测试:
curl -i -H "Content-Type: application/json" -X POST 'http://192.168.1.1:1234/student' \ -d \ ‘{ \ “id”:1312441, \ "name":"lucy", \ "birthplace":"beijin", \ "age":20, \ "grade":90 }’
注意需要将Content-Type设置为json flask的request模块才会对请求数据部分做json格式得解析;
如果返回200状态码并回复success,则数据添加成功;
3、PUT:更新信息
PUT方法通常用来进行数据的更新,相应的curl命令为:
curl -i -H "Content-Type: application/json" -X PUT 'http://192.168.1.1:1234/student?id=1312441' \ -d \ ‘{ \ "birthplace":"beijin", \ "age":20, \ "grade":90 }’
以uri中参数的数值作为key,查找需要修改的信息条目,服务端代码为:
from flask import jsonify from flask import request from flask import make_response students = [] @app.route('/students', methods = 'PUT') def update_students(): if not request.args or not 'id' in request.args: abort(400) update_id = request.args['id'] update_id = int(update_id) student = filter(lambda t: t['id'] == update_id, students) if len(student) == 0: abort(400) if not request.json: abort(403) student[0]['name'] = request.json.get('name', student[0]['name']) student[0]['age'] = request.json.get('age', student[0]['age']) student[0]['grade'] = request.json.get('grade', student[0]['grade']) student[0]['birthplace'] = request.json.get('birthplace', student[0]['birthplace']) return jsonify({student:student[0]})
如果找不到指定id的学生就会返回400错误,如果修改成功则返回修改后的学生信息;
4、DELETE:删除指定信息
使用DELETE来删除指定的学生信息,相应的请求信息为:
curl -X DELETE 'http://192.168.1.1:1234/student?id=1312441'
服务端处理代码为
from flask import jsonify from flask import request from flask import make_response students = [] @app.route('/students', methods = 'DELETE') def delete_students(): if not request.args: abort(400) if 'id' in request.args: d_id = request.args['id'] d_id = int(d_id) student = filter(lambda t: t['id'] == d_id, students) if len(student) == 0: abort(400) students.remove(student[0]) return "success"
5、GET:获取信息
使用GET方法获取学生信息,相应请求信息为:
curl -X GET 'http://192.168.1.1:1234/student?id=1312441'
服务端处理代码为:
from flask import jsonify from flask import request from flask import make_response students = [] @app.route('/students', methods = 'GET') def delete_students(): if not request.args: abort(400) get_id = request.args['id'] get_id = int(get_id) student = filter(lambda t: t['id'] == get_id, students) if len(student) == 0: abort(400) return jsonify({'student':student[0]})
实现了4个方法后,一个简单的web服务器就成型了。更复杂的功能可以在此基础上继续加强,下一章将介绍如何使用flask+数据库来存取数据;
← 使用flask开发RESTful架构的api服务器端(2)–flask的安装和使用
使用flask开发RESTful架构的api服务器端(4)–flask操作数据库 →
http://www.mrhaoting.com/?p=184
相关推荐
-
Django缓存系统 web开发
2019-6-13
-
记一次诡异的故障排查经历 web开发
2019-6-8
-
爬虫必备工具,掌握它就解决了一半的问题 web开发
2019-2-24
-
命令行神器推荐 web开发
2019-4-27
-
python3配置django连接数据库 web开发
2019-8-26
-
Python Tornado集成JSON Web Token方式登录 web开发
2019-6-27
-
实例讲解基于 Flask+React 的全栈开发和部署 web开发
2018-2-8
-
python+flask+sae+微信公众号开发后记 web开发
2019-1-30
-
Nginx与安全有关的几个配置 web开发
2019-6-8
-
python3+flask+mysql实现登录注册 web开发
2019-3-23