如何将python代码生成API接口
python代码生成API接口
如果要将我们写好的Python代码生成API接口时,我们需要借助Flask框架
1. 安装Flask
pip install Flask
2. 编写Flask应用
(1)新建python文件 app.py(注意创建的Python文件名不能为flask.py,这会与Flask 本身发生冲突)
(2)在新建的文件里写下如下内容:
#app.py from flask import Flask app = Flask(__name__) @app.route('/test',methos=['post']) def hello_world(): return 'Hello, World!' if __name__ == '__main__': app.run(debug=True)
首先我们导入了 Flask 类,接着我们创建一个该类的实例。第一个参数是应用模块或者包的名称。
如果你使用 一个单一模块(就像本例),那么应当使用 name ,因为名称会根据这个 模块是按应用方式使用还是作为一个模块导入而发生变化(可能是 ‘main’ , 也可能是实际导入的名称)。
这个参数是必需的,这样 Flask 才能知道在哪里可以 找到模板和静态文件等东西。然后我们使用 route() 装饰器来告诉 Flask 触发函数的 URL 。函数名称被用于生成相关联的 URL 。函数最后返回需要在用户浏览器中显示的信息。
3. 运行该Flaks应用
(1)在终端里导出 FLASK_APP 环境变量:
$ export FLASK_APP=app.py
(2)运行该程序
$ flask run 1. Running on http://127.0.0.1:5000/
4. 使用该接口
使用过Postman(一个接口测试工具)进行测试:
这将会得到返回结果“Hello, World!”
至此,我们完成了一个简单的将Python代码生成API接口的实例!
更多内容请参考Flask官方文档:
python写api接口实战
操作步骤
1. 导入:import flask,json
2. 实例化:api = flask.Flask(name)
3. 定义接口访问路径及访问方式:@api.route(’/index’,methods=[‘get/post/PUT/DELETE’])
4. 定义函数,注意需与路径的名称一致,设置返回类型并支持中文:def index(): return json.dumps(ren,ensure_ascii=False)
5. 三种格式入参访问接口:
- 5.1 url格式入参:flask.request.args.get(‘id’)
- 5.2 form-data格式入参:pwd = flask.request.values.get(‘pwd’)
- 5.3 josn格式入参:pwd = flask.request.json.get(‘pwd’)
6. 启动服务:api.run(port=8888,debug=True,host=‘127.0.0.1’),开启服务之后,就可以通过ip+端口+路径+入参访问接口
源码举例
#!/usr/bin/python3 # encoding:utf-8 import flask,json # 实例化api,把当前这个python文件当作一个服务,__name__代表当前这个python文件 api = flask.Flask(__name__) # 'index'是接口路径,methods不写,默认get请求 @api.route('/index',methods=['get']) # get方式访问 def index(): ren = {'msg':'成功访问首页','msg_code':200} #json.dumps 序列化时对中文默认使用的ascii编码.想输出中文需要指定ensure_ascii=False return json.dumps(ren,ensure_ascii=False) #post入参访问方式一:url格式参数 @api.route('/article',methods=['post']) def article(): #url格式参数?id=12589&name='lishi' id = flask.request.args.get('id') if id: if id == '12589': ren = {'msg':'成功访问文章','msg_code':200} else: ren = {'msg':'找不到文章','msg_code':400} else: ren = {'msg':'请输入文章id参数','msg_code':-1} return json.dumps(ren,ensure_ascii=False) #post入参访问方式二:from-data(k-v)格式参数 @api.route('/login',methods=['post']) def login(): #from-data格式参数 usrname = flask.request.values.get('usrname') pwd = flask.request.values.get('pwd') if usrname and pwd: if usrname =='test' and pwd =='123456': ren = {'msg':'登录成功','msg_code':200} else: ren = {'msg':'用户名或密码错误','msg_code':-1} else: ren = {'msg':'用户名或密码为空','msg_code':1001} return json.dumps(ren,ensure_ascii=False) #post入参访问方式二:josn格式参数 @api.route('/loginjosn',methods=['post']) def loginjosn(): #from-data格式参数 usrname = flask.request.json.get('usrname') pwd = flask.request.json.get('pwd') if usrname and pwd: if usrname =='test' and pwd =='123456': ren = {'msg':'登录成功','msg_code':200} else: ren = {'msg':'用户名或密码错误','msg_code':-1} else: ren = {'msg':'用户名或密码为空','msg_code':1001} return json.dumps(ren,ensure_ascii=False) if __name__ == '__main__': api.run(port=8888,debug=True,host='127.0.0.1') # 启动服务 # debug=True,改了代码后,不用重启,它会自动重启 # 'host='127.0.0.1'别IP访问地址
运行结果:
* Serving Flask app 'monitor' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Restarting with stat
* Debugger is active!
* Debugger PIN: 991-833-116
* Running on http://127.0.0.1:8888/ (Press CTRL+C to quit)
127.0.0.1 - - [16/Jan/2022 14:05:53] "POST /login?usrname=test&pwd=123456 HTTP/1.1" 200 -
127.0.0.1 - - [16/Jan/2022 14:08:34] "GET /index HTTP/1.1" 200 -
请求方式
使用postman测试接口是否可行
如:
url:127.0.0.1:8888/login
参数:usrname=test;pwd=123456
获取请求参数的几种方法
flask.request.form.get("key", type=str, default=None) 获取表单数据, flask.request.args.get("key") 获取get请求参数, flask.request.values.get("key") 获取所有参数。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
这篇文章主要介绍了python 代码实现k-means聚类分析(不使用现成聚类库),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-06-06
最新评论