博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
#sora#实验2
阅读量:6608 次
发布时间:2019-06-24

本文共 3021 字,大约阅读时间需要 10 分钟。

hot3.png

140149_KFCh_987833.jpg

昨天还是差不多12点半才睡,今天下午回去上自修肯定会困。。。

稍微试了下把flask应用中的类写在不同的python文件中。

实验目的:把flask应用中的类写成独立的模块,避免在主程序中写太多的class

源码:

flaskrr.py:

__author__ = 'hochikong'from flask import Flask,requestfrom flask.ext.restful import Resource,Api,reqparsefrom users import Usersapp = Flask(__name__)api = Api(app)todos = {'task':'get the list of docker'}parser = reqparse.RequestParser()parser.add_argument('name',type=str,help='get the name')parser.add_argument('auth-token',type=str,help='put the token here',location='headers')class TodoSimple(Resource):    def get(self,todo_id):        args = parser.parse_args()        if args['auth-token'] == 'thisismytoken':            return {todo_id:todos[todo_id]}        else:            return {'error':'token error'},401    def put(self,todo_id):        args = parser.parse_args()        if args['auth-token'] == 'thisismytoken':            todos[todo_id] = request.json.get('data')            return todos,201        else:            return {'status':'error'},401class GetName(Resource):    def post(self):        args = parser.parse_args()        name = args['name']        #name = {}        #name['ac'] = args['name']        #name = request.json.get('name')        return {'yourame':name}api.add_resource(TodoSimple,'/todo/
')api.add_resource(GetName,'/getname')api.add_resource(Users,'/users/','/users/
')if __name__ == '__main__':    app.run(debug=True)

users.py:

__author__ = 'hochikong'from flask import requestfrom flask.ext.restful import Resource,reqparseparser = reqparse.RequestParser()parser.add_argument('auth-token',type=str,help='put the token here',location='headers')class Users(Resource):    users = {"admin":"hochikong"}    def get(self):        args = parser.parse_args()        if args['auth-token'] == 'thisismytoken':            return self.users        else:            return {"status":"error","reason":"token error"}    def post(self,user_id):        args = parser.parse_args()        if args['auth-token'] == 'thisismytoken':            self.users[user_id] = request.json.get('username')            return self.users        else:            return {"status":"error","reason":"token error"}

测试的是users.py中的Users类,实现了get和post方法,可以创建或查询用户

设计要求:避免把所有类写在主程序里,代码模块化,提高可读性

代码分析:

每个独立的模块,应该导入并继承flask-restful的Resource类:

from flask.ext.restful import Resource,reqparse
class Users(Resource):

当方法中存在需要reqparse处理的参数,你也要导入reqparse和定义解析参数:

parser = reqparse.RequestParser()parser.add_argument('auth-token',type=str,help='put the token here',location='headers')

在这里解析发送来的json文档是直接依靠request.json.get()解析的:

self.users[user_id] = request.json.get('username')

在这个例子中,用户数据只是保存在内存中,在sora的实际开发中,还得用sqlalchemy处理。

要使用这个类,只要在主程序中import User类,并添加为资源即可:

from users import Users
api.add_resource(Users,'/users/','/users/
')

这里为Users资源配置了多个url,/users是使用GET获取用户信息时访问的url,而加了user_id变量的是用于创建新的用户。

测试过程:

自然要先启动flaskrr.py

用昨天安装的REST client测试:

先测试get方法:

142410_QImi_987833.png

可以看到数据的正确输出

测试下post方法:

142738_96Ik_987833.png

:),用了全蛋哥的名字了

使用错误的token:

142908_g5Ms_987833.png

基本测试完毕,现在就差实际开发了

转载于:https://my.oschina.net/hochikong/blog/403525

你可能感兴趣的文章
Android——SlidingMenu学习总结
查看>>
React-Native 之 GD (十六)首页筛选功能
查看>>
UI概念体系要素
查看>>
SSISDB5:使用TSQL脚本执行Package
查看>>
performSelectorInBackground V.S detachNewThreadSelector?
查看>>
linux,Centos,bash: service: command not found
查看>>
【转】UIColor对颜色的自定义
查看>>
php编译报错 configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-...
查看>>
asp.net后台进程做定时任务
查看>>
Ural_1671. Anansi's Cobweb(并查集)
查看>>
Web墨卡托坐标与WGS84坐标互转
查看>>
给vs2012换肤
查看>>
java接口中多继承的问题
查看>>
索引笔记《二》确定需要建立索引的列
查看>>
libjpeg的问题
查看>>
MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作
查看>>
git 显示多个url地址推送
查看>>
Java Web之Filter
查看>>
HTTP状态码详解
查看>>
Java_动态加载
查看>>