zoukankan      html  css  js  c++  java
  • Python 接口开发flask模块 day6

    一、接口开发的作用

    mock接口:模拟功能:

    用处:

      1、自己模拟要调用的接口,测试自己要模拟的各种情况

      2、给别人提供数据,别人调我的接口,我把数据范湖给他

    二、flask模块:

    1.flask模块是轻量级的web开发框架.可以开发网站,也可以开发接口,主要用来开发接口、

    缺点:操作数据库不方便

    首先,需要安装Python依赖库

    pip install flask
    1、举个简单例子,登录成功接口
    import flask
    
    server = flask.Flask(__name__)#初始化的过程,起动一个服务,把当前这个Python文件当做一个服务
    
    @server.route('/index')#通过python装饰器的方式定义一个陆游地址/index是接口的url
    def login():
        d = {'code':0,'msg':'success'}
        return json.dumps(d,ensure_ascii=False)
    server.run(host='0.0.0.0',port=8083,debug =True)
    # 默认端口号是5000,可自行修改;
    # 指定host为0.0.0.0在一个局域网里的别人也可以访问,公网ip
    # debug=True 修改代码则无须重启

    运行:

    使用浏览器访问:

    2、举个例子,不想让访问到数据库所有数据,只能访问个别的表 app_student,app_user,app_product的接口

    import flask
    import pymysql
    import json
    
    server = flask.Flask(__name__)
    
    def op_mysql(sql,many_tag=False):
        conn = pymysql.connect(host='118.24.3.40',user='jxz',password='123456',
                               db='jxz',port=3306,charset='utf8',
                               autocommit=True)
        cur = conn.cursor(pymysql.cursors.DictCursor)
        cur.execute(sql)
        if many_tag:
            result = cur.fetchall()
        else:
            result = cur.fetchone()
        cur.close()
        conn.close()
        return result
    
    @server.route('/get_data')
    def table_data():
        table_list = ['app_myuser','app_product','app_student']
        table_name = flask.request.args.get('table_name')
        limit = flask.request.args.get('limit',5)#5为默认值
        if table_name :
            if table_name in table_list:
                sql = 'select * from %s limit %s'%(table_name,limit)
                data = op_mysql(sql,True)
            else:
                data = {'code': -2, 'msg': "你没有权限查看这个表里面的数据"}
        else:
            data = {'code': -1, 'msg': "必填参数未填,请查看接口文档"}
    
        return json.dumps(data,ensure_ascii=False)#list可转为json串
    server.run(host='0.0.0.0',port=8023,debug=True)#run只能写一次,且必须写在最下面

    (1)当传入允许访问的数据库表名时

    (2)当传入的是不允许访问的数据库表名时

    (3)当不传入任何参数时

     3、举个例子,post方法

    import flask
    
    
    server =flask.Flask(__name__)#把当前python文件当作一个服务
    
    
    @server.route('/post_data',methods=['post'])
    #methods默认支持get,methods=['post']post请求,methods=['post','get]支持get,post
    def post_data():
        # user_name=flask.request.args.get('username')  #参数在url中时,使用args.get      get()函数中的名是请求的参数名
        user_name2=flask.request.values.get('username2')  #参数在body中,使用values.get
        file=flask.request.files.get('file_name')
        file.save(file.filename)#保存文件为上传的文件名
        # print(file.filename)
        return file.filename+'  '+user_name2                  #必须要有返回值,且返回值是字符串类型
    
    
    
    server.run(host='0.0.0.0',port=8023,debug=True)#run只能写一次,且必须写在最下面

    需要用postman请求:

  • 相关阅读:
    TCP和UDP的一些区别: TCP提供可靠传输的机制:
    rpc和 http的区别
    熔断原理与实现Golang版
    源码解读 Golang 的 sync.Map 实现原理
    mysql底层为啥用b 树不用红黑树_MySQL索引底层数据结构
    一条sql 查询语句是如何执行的
    网络相关知识
    为什么遍历 Go map 是无序的?
    Go语言 参数传递究竟是值传递还是引用传递的问题分析
    解决goland debug 调试问题 Version of Delve is too old for this version of Go
  • 原文地址:https://www.cnblogs.com/candysalty/p/11175012.html
Copyright © 2011-2022 走看看