flask一个接口案例

脚本案例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re
import time

# 注册接口
import flask
import pymysql
from flask import request, jsonify  # 想获取到请求参数的话,就得用这个

server = flask.Flask(__name__)  # 把这个python文件当做一个web服务


def get_conn():
    return pymysql.connect(host='192.168.20.187', user='root', password='', db='dalan', charset='utf8')


# 数据查询
def _select(sql, data=()):
    conn = get_conn()  # 获取操作游标
    with conn.cursor() as cursor:
        cursor.execute(sql, data)  # 执行sql
        res = cursor.fetchone()  # 获取查询结果
        server.logger.info(res)  # 记录日志
    conn.commit()  # 提交到数据库执行
    conn.close()  # 关闭数据库连接
    return res

#更新数据
def _update(sql, data=()):
    conn = get_conn()
    with conn.cursor() as cursor:
        # 执行sql
        res = cursor.execute(sql, data)
    conn.commit()
    conn.close()
    return res


# 数据写入
def _insert(sql, data=()):
    conn = get_conn()
    with conn.cursor() as cursor:
        # 执行sql
        res = cursor.execute(sql, data)
    conn.commit()
    conn.close()
    return res



# 响应
def respond(flag, code, msg='',user_id='null',user_name='null'):
    ret = {
        'code': code,
        'status': flag,
        'msg': msg,
        'user_id':user_id,
        'user_name':user_name
    }
    server.logger.info(ret)#日志记录响应结果
    return jsonify(ret)

@server.route('/districtdervice', methods=['post'])  # router里面第一个参数,是接口的路径
def reg():
    if request.values.get('apk_link') and request.values.get('original_id') and request.values.get('pkg_id') and request.values.get('service_name') and request.values.get('service_time') and request.values.get('service_status'):
        _apk_link = request.values.get('apk_link')  # 这里就是你调用接口的是传入的参数
        _original_id=request.values.get('original_id')
        _pkg_id=request.values.get('pkg_id')
        _service_name=request.values.get('service_name')
        _service_time = request.values.get('service_time')
        _service_status=request.values.get('service_status')
        _novice= request.values.get('novice')
        server.logger.info("districtdervice_request all data: {}".format(request.form.to_dict()))#获取请求提交数据
        server.logger.info("districtdervice_request url: {}".format(request.url))#记录请求url
        if _apk_link is None:
            server.logger.info("districtdervice request address is None")
            return respond(True, 500, msg='地址不合法')
        # 判断传参是否合法
        if re.match(r'^https?:/{2}.+$', _apk_link) is None:
            server.logger.info("districtdervice request  Illegal parameter")#记录请求参数不合法
            return respond(True, 500, msg='地址不合法')
        if _apk_link:
            try:
                sql = "select apk_link,creation_time from districtdervice_task where apk_link=%s"
                res = _select(sql, (_apk_link,))  # 执行sql
                server.logger.info(res)  # 把查询结果写入日志
                if res:
                    server.logger.info("user exist")
                    sql="update districtdervice_task set original_id=%s,pkg_id=%s,service_name=%s,service_time=%s where apk_link=%s"
                    _update(sql, (_original_id,_pkg_id,_service_name,_service_time,_apk_link))  # 执行sql
                    return respond(True, 300, msg='推荐服渠道更新成功')
                else:
                    date_time = time.strftime("%Y-%m-%d %H:%M:%S")
                    if _novice is None:
                        sql = "insert into  districtdervice_task(apk_link,original_id,pkg_id,service_name,service_time,service_status,creation_time) values(%s, %s,%s,%s, %s,%s,%s)"
                        _insert(sql, (_apk_link, _original_id,_pkg_id,_service_name,_service_time,_service_status,date_time))#插入数据库
                    else:
                        print('999999999999')
                        sql = "insert into  districtdervice_task(apk_link,original_id,pkg_id,service_name,service_time,service_status,creation_time,novice) values(%s, %s,%s,%s, %s,%s,%s,%s)"
                        _insert(sql, (_apk_link, _original_id,_pkg_id,_service_name,_service_time,_service_status,date_time,_novice))#插入数据库
                    server.logger.info("register success")
                    return respond(True, 200, msg=" 推荐服渠道包上传成功!")
            except:
                server.logger.info("handle error")
                return respond(False, 500, msg="异常!")
    else:
        return respond(False, 416, msg="必填参数未填,请看接口文档!")



if __name__ == '__main__':
    server.run(port=8000, debug=True, host='0.0.0.0')
View Code

 

简单接口示例:

#!/usr/bin/env python
# encoding: utf-8
import flask
from flask import request, jsonify  # 想获取到请求参数的话,就得用这个

server = flask.Flask(__name__)  # 把这个python文件当做一个web服务

# 响应
def respond(flag, code, _method,msg=''):
    ret = {
        'code': code,
        'status': flag,
        'msg': msg,
        'method':_method
    }
    server.logger.info(ret)#日志记录响应结果
    return jsonify(ret)



@server.route('/subcontract', methods=['post'])  # 接口的路径
def add_subcontract():
    if request.method=='POST':
        game_id=request.args['game_id']
        print(game_id)
        return respond(True, 200, 'POST',msg="渠道包上传成功!")
    else:
        return respond(True, 200, 'GET',msg="请求方式不正确")



if __name__ == '__main__':
    server.run(port=8000, debug=True, host='0.0.0.0',threaded=True)

 

自学接口案例:

1.接口文档

 

 

接口脚本:

#!/usr/bin/env python
# encoding: utf-8
#_______________________________________________________________________________获取学生成绩_________________________________________________________________________
import flask
from flask import request, jsonify  # 想获取到请求参数的话,就得用这个

server = flask.Flask(__name__)  # 把这个python文件当做一个web服务

# 响应
def respond(flag, code, _method,msg=''):
    ret = {
        'code': code,
        'status': flag,
        'msg': msg,
        'method':_method
    }
    server.logger.info(ret)#日志记录响应结果
    return jsonify(ret) #jsonify返回json数据格式



@server.route('/student/get_achievement', methods=['post'])  # 接口的路径
def add_subcontract():
    qu_json=request.get_json()
    print(qu_json)
    if qu_json['user_id'] and  qu_json['name'] and qu_json['time_stamp'] and qu_json['grade'] and qu_json['family']:
        ret={
              "user_id": "202108110",
              "name": "张三",
              "age": "16",
              "height": "156cm",
              "grade": "5",
              "is_no": "no",
              "family": "science",
              "achievement": {
                "chinese": "86",
                "mathematics": "105",
                "english": "92",
                "physics": "65",
                "chemistry": "66"
              },
              "count": {
                "age": "75",
                "comt": "586"
              }
            }
        return respond('success', 200, 'POST',ret)



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

 

posted on 2020-08-26 14:50  chen_2987  阅读(174)  评论(0编辑  收藏  举报

导航