python的flask实现接口_使用python的Flask实现一个接口mock数据(傻瓜教程)

本教程使用的是python3 因为python2官方已经不维护了,当然在编写过程中没什么区别,安装就比较简单了只要电脑有pip执行pip3 install flask即可

一般的接口包括增删改查以及查看列表五个接口

接下来就模拟这五个简单的接口:

使用POST/GET请求新建一个资源

fromflask import Flask, jsonify, request, abort, make_response

app=Flask(__name__)

@app.route('/api/tasks/', methods=['GET', 'POST'])

def create_task():if request.method == "GET":return make_response(jsonify(data), 200)

name= request.json['name']if name innames:return make_response(task_exist, 400)else:

names.append(name)

data.append(request.json)return make_response(request.json, 201)if __name__ == '__main__':

app.run(host='127.0.0.1', port=8080, debug=True)

如上述代码,在main函数里可以通过app.run指定部分参数,host和port不做赘述,debug模式如果开启则在修改后可以自动重启服务。非常好用

知识点:

1. jsonify:将我们传入的json形式数据序列化成为json字符串,作为响应的body,并且设置响应的Content-Type为application/json,构造出响应返回至客户端

2. request可以通过request.json取到接受到数据

3. abort用于返回通用的错误比如:404,400,500

4.make_response自定义返回的object,因为一般接口都会返回一个数据和状态码,所以结构为make_response(request.json, 201)

5.路由匹配的规则

1. :默认接受的类型是str

2. :指定id的类型为str

3. :指定的id类型是整性

4. : 指定id的类型为浮点数(四舍五入,且不能接收整数类型)

5. : 指定接收的path为url中的路径

2. 使用GET请求获取列表

from flask importFlask, jsonify, request, abort, make_response

app= Flask(__name__)

data=[

{"name": "test1", "desc": "test1", "id": 1},

{"name": "test2", "desc": "test2", "id": 2},

{"name": "test3", "desc": "test3", "id": 3},

]

task_does_not_exist= {"msg": "task does not exist"}

names= ['test1', 'test2', "test3"]

task_exist= {"msg": "name is exist"}

@app.route('/api/tasks/')defget_task(name):if len(name) > 0 and name innames:for content indata:if name == content['name']:return make_response(jsonify(content), 200)else:return make_response(jsonify(task_does_not_exist), 404)if __name__ == '__main__':

app.run(host='127.0.0.1', port=80, debug=True)

3. 使用PUT方法更新资源

@app.route('/api/tasks/', methods=['PUT'])defupdate_task(name):if len(name) > 0 and name innames:for content indata:if name == content['name']:

id= content["id"]

data[id- 1] =request.jsonreturn make_response(jsonify(data[id - 1]), 204)else:

abort(404)

4. 使用DELETE删除资源

@app.route('/api/tasks/', methods=['DELETE'])defdelete_task(name):if len(name) > 0 and name in names:return make_response(jsonify(data), 204)else:

abort(404)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值