Flask restful api与blueprint结合实践
admin
2023-07-19 03:02:13
0

所需依赖:

Flask
Flask-RESTful
Python2.7

备注:flask-restful不能和flask的render_template模板结合使用,因为restfulapi的设计不是为了在flask里直接返回html。
在使用restful时,使用前后端分离模式。

本文档不包含flask的认证登陆功能

restful说明


restful把所有url请求当做资源, 资源下的get方法对应get请求,post方法对应post请求,put方法对应put请求,delete方法对应delete请求。

get请求,post新增, put修改, delete删除

具体的url设计模式,参考文章:RESTful API 设计指南

1、目录结构

.
├── assets
│   ├── __init__.py
│   ├── server.py
│   ├── urls.py
├── run.py

2、assets下文件配置

__init__.py

from flask import Blueprint
assets_page = Blueprint('assets_page', __name__)
import urls 

urls.py

#coding:utf-8
from assets import assets_page  
from flask_restful import Resource, Api
from server import Servers, Server 

api = Api(assets_page)

#注册路由
api.add_resource(Servers, '/servers')
api.add_resource(Server, '/servers/<_id>')

server.py

#coding:utf-8
from flask import request
from flask_restful import Resource, Api

class Servers(Resource):
   def get(self):
     #返回所有数据
     return 'this is data list'
   def post(self):
     #新增数据
     data = request.get_json()
     return 'add new data: %s'%data  

class Server(Resource):
   def get(self,_id):
     #返回单条数据 
     return 'this data is %s'%_id
   def delete(self,_id):
     #删除单条数据
     return 'delete data: %s'%_id
   def put(self, _id):
     #修改单条数据
     data = request.get_json()
     return 'put data %s: %s'%(_id, data)

3、run.py配置

#coding:utf-8
from flask import Flask
#导入蓝图实例
from assets import assets_page

app = Flask(__name__,
            template_folder='templates',
            static_folder='static',
            )
#注册蓝图
app.register_blueprint(assets_page)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

4、测试

在linux终端测试

#获取列表:  
$ curl  127.0.0.1:5000/servers
"this is data list"

#新增数据  
$ curl -X POST -H "Content-Type:application/json" -d '{"name":"yangr"}' 127.0.0.1:5000/servers
"add new data: {u'name': u'yangr'}"  

#修改数据  
$ curl -X PUT -H "Content-Type:application/json" -d '{"name":"yangr"}' 127.0.0.1:5000/servers/2
"put data 2: {u'name': u'yangr'}"  

#删除数据  
$ curl -X DELETE 127.0.0.1:5000/servers/3
"delete data: 3"

后续再出sqlalchemy系列操作数据库的文章

相关内容

热门资讯

伊朗最高领袖顾问警告将打击以色... 当地时间6月14日深夜,伊朗最高领袖政治顾问韦拉亚提在社交媒体发文表示,“零时已至,发射装置正就位待...
伊朗外交部谴责以色列袭击贝鲁特... 当地时间14日晚,伊朗外交部发表声明,强烈谴责以色列当天下午对贝鲁特达希耶一处住宅区实施的军事行动,...
伊朗总统:伊朗最高国家安全委员... 新华社德黑兰6月14日电 据伊朗伊斯兰共和国广播电视台14日晚报道,伊朗总统佩泽希齐扬表示,伊朗最高...
伊朗西部地区机场航班暂停 据伊朗方面当地时间14日消息,伊朗西部地区的机场航班已暂停,直至另行通知。据称,此决定是基于当前情况...
伊朗总统称维护国家团结是优先事... 新华社德黑兰6月14日电 据伊朗塔斯尼姆通讯社14日报道,伊朗总统佩泽希齐扬在与国内媒体负责人举行的...
日本拟将航空自卫队改编为航空宇... 新华社东京6月14日电 (记者李子越 刘洁秋)据《日本经济新闻》14日报道,日本政府计划于2026年...
推动终身学习蔚然成风 为广东发... □杨帅 终身学习既是时代发展的必然要求,也是广东奋进前行的有力支撑。当前,我们正处在一个知识爆炸、变...
原创 又... 据香港英文媒体《南华早报》6月5日报道,此前在国际顶尖名校加州大学伯克利分校物理系任教的顶尖天体物理...
原创 荣... 荣耀新机从不缺席,而且近月连续推出新机,比如4月的荣耀X80i、荣耀畅玩70C等;5月的荣耀WIN ...
3D空间记忆App“Remy”... IT之家 6 月 14 日消息,去年 6 月的华为开发者大会 HDC 2025 上,华为终端 BG ...