前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flask一分钟Mock一个API

Flask一分钟Mock一个API

作者头像
dongfanger
发布2021-07-01 15:47:22
8920
发布2021-07-01 15:47:22
举报
文章被收录于专栏:dongfanger

如果安装了Python,并且安装了Flask:

代码语言:javascript
复制
pip install flask

那么就可以在短短一分钟内Mock出来一个API,而且只需要用到一个文件

彻底告别在线Mock网站无法指定请求方法,Postman配置繁琐的问题。

建一个文件

随便在哪创建一个py文件,比如app.py。

写一段代码

代码语言:javascript
复制
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "Hello, World!"

if __name__ == "__main__":
    app.run()

跑一条命令

在cmd或shell执行python app.py,服务就起来了:

代码语言:javascript
复制
D:\>python app.py
 * Serving Flask app "app" (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: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

测试一下:

代码语言:javascript
复制
D:\>curl http://127.0.0.1:5000/
Hello, World!

GET请求

不带参数

代码:

代码语言:javascript
复制
@app.route("/testGet")
def my_get():
    return "This is GET"

测试:

代码语言:javascript
复制
D:\>curl http://127.0.0.1:5000/testGet
This is GET

带参数

代码:

代码语言:javascript
复制
@app.route("/testGetParams")
def my_get_params():
    return request.args

测试:

代码语言:javascript
复制
D:\>curl "http://127.0.0.1:5000/testGetParams?a=1&b=2"
{"a":"1","b":"2"}

POST请求

不带参数

代码:

代码语言:javascript
复制
@app.route("/testPost", methods=["POST"])
def my_post():
    return "This is POST"

测试:

代码语言:javascript
复制
D:\>curl -X POST "http://127.0.0.1:5000/testPost"
This is POST

带Json参数

代码:

代码语言:javascript
复制
@app.route("/testPostJson", methods=["POST"])
def my_post_json():
    return request.json

test.json

代码语言:javascript
复制
{
	"name": "dongfanger",
	"alias": "redsun"
}

测试:

代码语言:javascript
复制
D:\>curl -H "Content-Type: application/json" -d "@test.json" "http://127.0.0.1:5000/testPostJson"
{'name': 'dongfanger', 'alias': 'redsun'}

同时GET和POST

代码:

代码语言:javascript
复制
@app.route("/testGetPost", methods=["GET", "POST"])
def my_get_post():
    if request.method == "GET":
        return "This is GET"
    if request.method == "POST":
        return "This is POST"

测试:

代码语言:javascript
复制
D:\>curl http://127.0.0.1:5000/testGetPost
This is GET
D:\>curl http://127.0.0.1:5000/testGetPost -X POST
This is POST

请求头

代码:

代码语言:javascript
复制
@app.route("/testHeaders")
def my_headers():
    return str(request.headers)

测试:

代码语言:javascript
复制
D:\>curl http://127.0.0.1:5000/testHeaders
Host: 127.0.0.1:5000
User-Agent: curl/7.55.1
Accept: */*

完整代码解析

代码语言:javascript
复制
from flask import Flask, request

# Flask实例
app = Flask(__name__)


# @app.route添加路由
@app.route("/testGet")
def my_get():
    return "This is GET"


@app.route("/testGetParams")
def my_get_params():
    # flask.request里面封装了请求数据,可以看需要获取
    return request.args

# methods指定请求方法
@app.route("/testPost", methods=["POST"])
def my_post():
    return "This is POST"


@app.route("/testPostJson", methods=["POST"])
def my_post_json():
    return request.json

# 可以同时指定GET和POST
@app.route("/testGetPost", methods=["GET", "POST"])
def my_get_post():
    # 判断请求方法是GET或POST
    if request.method == "GET":
        return "This is GET"
    if request.method == "POST":
        return "This is POST"


@app.route("/testHeaders")
def my_headers():
    return str(request.headers)


if __name__ == "__main__":
    app.run()

小结

本文介绍了如何使用Flask在一分钟内Mock一个API,只需要一个文件,一段代码,一条命令,即可完成。然后分别介绍了常用的GET请求和POST请求,以及带不带参数,获取请求头的用法。在测试时用到了curl命令,它的名字是Client URL的意思,在Mac和Windows都可以安装使用。

参考资料: https://flask.palletsprojects.com/en/2.0.x/quickstart/ http://www.ruanyifeng.com/blog/2019/09/curl-reference.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-06-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 建一个文件
  • 写一段代码
  • 跑一条命令
  • GET请求
    • 不带参数
      • 带参数
      • POST请求
        • 不带参数
          • 带Json参数
          • 同时GET和POST
          • 请求头
          • 完整代码解析
          • 小结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档