flask-restful

Posted bill2014

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask-restful相关的知识,希望对你有一定的参考价值。

from flask import Flask,jsonify,g
#导入restful类库
from flask_restful import Api,Resource
from flask_httpauth import HTTPBasicAuth
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer



app = Flask(__name__)



#创建认证对象
auth = HTTPBasicAuth()

#设置认证的回调函数,需要认证时自动回调,成功返回true,失败返回flase
@auth.verify_password
def verify_password(username_or_token,password):
    if username_or_token == bill and password == 123456:
        return True
    else:
        if check_token(username_or_token):
            return True
        return False

#认证的错误显示
@auth.error_handler
def unauthorized():
    return jsonify({error:认证失败}),403

#生成token
app.config[SECRET_KEY] = 123456
def generate_token(expires_in=3600):
    s = Serializer(app.config[SECRET_KEY],expires_in=expires_in)
    return s.dumps({username:jerry,password:123456})

#校验token
def check_token(token):
    s = Serializer(app.config[SECRET_KEY])
    try:
        data = s.loads(token)
    except:
        return False
    g.username = data.get(username)
    return True

#创建api对象
api = Api(app)


@app.route(/token)
@auth.login_required
def get_token():
    #return jsonify({‘token‘:generate_token()})
    return generate_token()

#创建资源,继承自Resource
class UserAPI(Resource):
    def get(self,id):
        return {User:GET}
    def put(self,id):
        return {User:PUT}
    def delete(self,id):
        return {User:DELETE}

class UserListAPI(Resource):
    #添加认证(资源保护),最简单的认证,传输的时候不够安全
    decorators = [auth.login_required]
    def get(self):
        #return {‘UserList‘:‘GET‘}
        return {User: g.username}
    def post(self):
        return {UserList:POST}


#添加资源
#参数:1、资源类名,2、路由地址,可以是多个路由,访问相同地址,3、端点
api.add_resource(UserAPI,/user/<int:id>,endpoint=user)
api.add_resource(UserListAPI,/user/,endpoint=users)




if __name__ == __main__:
    app.run(debug=True)

 

以上是关于flask-restful的主要内容,如果未能解决你的问题,请参考以下文章

使用 flask-restful 时返回 text/html 内容类型

Flask-RESTful - 不返回对象属性而不是返回 null

Flask-RESTful API:多个复杂的端点

flask-restful 组件

Flask-RESTful 快速构建TODO应用

flask-rest-前后端分离