zoukankan      html  css  js  c++  java
  • python实现自定义接口

    一、开发接口的作用

      1、mock 服务:在别的接口没有开发完成的时候可以模拟一些接口以便测试已经开发完成的接口,例如假的支付接口,模拟支付成功、支付失败。

      2、了解接口是如何实现的:数据交互、数据返回

      3、开发给别人查看数据,避免其他人直接操作、查看数据库

    二、 flask

    flask是一个python编写的轻量级框架,可以使用它实现一个网站或者web服务。本文就用flask来开发一个接口。

    flask需要先安装再引用。pip install flask

    用flask开发接口的流程为:

    1、定义一个server

    server=flask.Flask(__name__) #__name__代表当前的python文件。把当前的python文件当做一个服务启动

    2、然后定义接口函数,一般函数和接口函数的区别在于,定义为接口的函数上方要特别加上装饰器:

    @server.route('/index',methods=['get','post']) #第一个参数就是路径,第二个参数支持的请求方式,不写的话默认是get,也可以指定一个

    @server.route('/index',methods=['get','post'])#第一个参数就是路径,第二个参数支持的请求方式,不写的话默认是get
    def index():
        res={'msg':'这是我开发的第一个接口','msg_code':0}
        return json.dumps(res,ensure_ascii=False)#转成字符串类型

    三、接口开发的步骤

      1、实例化server

      2、将装饰器下面的函数变为一个接口

      3、启动服务

      简单的接口开发示例:

    import flask,json
    server = flask.Flask(__name__)           # 实例化server,把当前这个python文件当作一个服务,__name__代表当前这个python文件
    @server.route('/index',methods=['get'])  # 'index'是接口路径,如methods不写,则默认get请求
    # 装饰器,下面的函数变为一个接口
    def index():
        res = {'msg':'这是我开发的第一个接口','msg_code':'0000'}
        return json.dumps(res,ensure_ascii=False)
        # json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False
    
    server.run(port=8888,debug=True,host='0.0.0.0')  # 启动服务;端口不写默认是5000,也可以自定义,但注意不要与机器上已占用的port起冲突,
    # debug=True,改了代码后,不用重启,它会自动加载重启
    # 'host='0.0.0.0'同一局域网下,别人可以通过IP访问
    # 最终这个接口的访问地址就是  http://127.0.0.1/index  ,get方法。返回数据是json格式res内容

    接口访问中,经常会需要输入参数。那么如果要接受传入的参数,则可用以下方法:

      username=flask.request.values.get('username')

      示例:开发一个登录接口

    import flask
    import tools #自己写的py,里面写了一些下面需要调用的函数
    import json
    server = flask.Flask(__name__)
    #新建一个服务,把当前这个python文件当做一个服务
    
    #开发一个登录接口
    @server.route('/login',methods=['get'])
    def login():
        uname = flask.request.values.get('username')
        pd = flask.request.values.get('passwd')
        sql = 'select * from app_myuser where username="%s"'%uname
        res = tools.my_db(sql) #tools里的函数:连接数据库,执行sql并返回结果
        if res:
            if tools.my_md5(pd) == res.get('passwd'): #tools里的函数,加密密码
                res = {"code":0,"msg":"登录成功!"}
            else:
                res = {"code":1,"msg":"密码错误!"}
        else:
            res = {'code':2,"msg":"用户不存在"}
        return json.dumps(res,ensure_ascii=False,indent=4) #输出json格式
    
    server.run(host='127.0.0.1',port=8998,debug=True)#若别人访问这个接口,则host需要输入自己的ip地址,而不是127.0.0.1
    
    #以上接口访问地址即:http://127.0.0.1:8998/login?username=usertest&passwd=123123

    tools里面封装的函数如下:

    import pymysql  #连接数据库,执行sql并返回sql执行结果
    def my_db(sql):
        conn = pymysql.connect(host='127.0.0.1',user='xxx',password='123456',
                        db='db1',port=3306,charset='utf8',autocommit=True)
        cur = conn.cursor(pymysql.cursors.DictCursor)
        cur.execute(sql)
        res = cur.fetchone() #{'username':'test'}  {}
        cur.close()
        conn.close()
        return res
    
    import hashlib
    def my_md5(s,salt=''): #md5加密
        s = s+salt
        news = str(s).encode()
        m = hashlib.md5(news)
        return m.hexdigest()
    
    if __name__ == '__main__':
        #判断如果是在别的文件里面导入这个python文件的话,就不执行下面的代码
        print(strTotimestamp())
        print(clean_log('.'))
        print(clean_log('.',2))
  • 相关阅读:
    JMeter参数签名——Groovy工具类形式
    arthas进阶thread命令视频演示
    疫情期间,如何提高远程办公效率
    Groovy中的闭包
    arthas快速入门视频演示
    绑定手机号性能测试
    基于HTTP请求的多线程实现类--视频讲解
    合格的测试经理必备技能
    Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your My
    Navicat Premium怎么设置字段的唯一性(UNIQUE)?
  • 原文地址:https://www.cnblogs.com/blueteer/p/10142627.html
Copyright © 2011-2022 走看看