欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

flask_restful API 模块化示例

程序员文章站 2022-06-10 20:35:03
...

一、执行文件run.py

 

# -*- coding: utf-8 -*-
from exception.handler_exception import HandlerException as handler

from flask_restful import Api

app = Flask(__name__)

api = Api(app)

import app.api.route as route

route.initRoute(api)


if __name__ == '__main__':

    """这个handler处理Api异常"""
    #handler.handlerException(handler,app)
    #app.run(debug=True)

 

二、api管理 route.py

 

from app.api.resource.TestreSource import *


def initRoute(api):
    api.add_resource(Test, '/testapi',endpoint='testapi')
api.add_resource(CheckTeacher_age, '/CheckTeacher',endpoint='CheckTeacher')
    api.add_resource(CheckTeacher_name, '/CheckTeacher_name/get',endpoint='CheckTeacher_name')

  

 

三、api接口文件一TestreSource.py

 

from flask_restful import Resource

class Test(Resource):

    def get(self):
        data=[{
            "clientSn":2617484,
            "sessionTime":"2018-06-21 02:00:00",
            "contractSn":50217661
        }]
        return data


    def post(self):

        return {'hello': '梅西'}

 

 

 

CheckTeacher_age、CheckTeacher_name文件:

 

# -*- coding: utf-8 -*-
from flask_restful import Resource,marshal,fields
from app.tools.responseEntity import *
from flask import request

# 对对象进行格式化,只返回前端需要的数据
menu_fields = {
    "id": fields.String,
    "name": fields.String,
    "bolg_url": fields.String
}


class CheckTeacher_age(Resource):

    @classmethod
    def get(cls):
        stu= {
                "id": "007",
                "name": "霍元甲",
                "bolg_url": "http://xiaojingjing.iteye.com"
            }

        return stu

    def post(slef):
        id=request.json.get('id')
        name=request.json.get('name')
        stu={
            "id":id,
            "name":name
        }
        data=marshal(stu,menu_fields)
        return fullResponse(data=data,code=200,msg="查询成功")

class CheckTeacher_name(Resource):


    def get(slef):
        #get请求方式,获取rul里面的参数id
        id = request.args["id"]
        print("url中的id值为:",id)
        name = "C罗"
        stu={
            "id":id,
            "name":name
        }
        code="300"
        msg="get获取url参数id成功,id为:%s"%id

        return fullResponse(data=stu,code=code,msg=msg)

    def post(slef):
        id=request.json.get('id')
        name=request.json.get('name')
        stu={
            "id":id,
            "name":name
        }
        data=marshal(stu,menu_fields)
        return fullResponse(data=data,code=200,msg="查询成功")




 

 

格式化接口返回内容文件

 

# -*- coding: UTF-8 -*-
from flask import jsonify


def fullResponse(data='', msg='', code=0):
    if msg == '':
        return jsonify({'code': code, 'data': data})
    elif data == '':
        return jsonify({'code': code, 'msg': msg})
    else:
        return jsonify({'code': code, 'msg': msg, 'data': data})


def statusResponse(msg, code=0):
    return jsonify({'code': code, 'msg': msg})

 请求示例:

 

url:/CheckTeacher_name/get?id=568 Get

{
    "id":123,
    "name":"小明"
}

 出参:

 

{
    "code": "300",
    "data": {
        "id": "568",
        "name": "C罗"
    },
    "msg": "get获取url参数id成功,id为:568"
}

 

 

rul:/CheckTeacher_age get

出参:

 

{
    "code": 0,
    "data": {
        "bolg_url": "http://xiaojingjing.iteye.com",
        "id": "007",
        "name": "霍元甲"
    }
}

 

 

 

rul:/CheckTeacher_age post

入参:

{
    "id":123,
    "name":"小明"
}

 出参:

{
    "code": 200,
    "data": {
        "bolg_url": null,
        "id": "123",
        "name": "小明"
    },
    "msg": "查询成功"
}