rest - 使用 Flask 创建端点参数的约定?
问题描述
我的 REST API 知识不是最新的。当我们在实现 REST API 时应用过滤器或排序时,我知道我们曾经像下面这样放置?
和&
到端点:
/actors?attr={attr_value} Example: /actors?name=”Bob”
Filters out all actors that don’t have “Bob” in their name (Should allow for similar filtering for any other attribute)
但是,当我看到 Flask 示例时,我从未见过有人将这些参数添加到端点,例如
@app.route("/api/v1/actors?gender=<gender>", methods = ['GET'])
def get_player(gender):
....
使用 Flask 实现 REST API 时应用过滤器或排序的正确方法是什么?
解决方案
对于简单的GET
请求,有一些方法可以传递查询参数:
- 作为路径参数
- 作为查询参数
GET
带有正文的请求是可能的,但大多被认为是不好的做法。
以下示例提供了两个端点,每个端点都有一个示例。
import json
import flask
from flask import Flask
from flask import request
app = Flask(__name__)
# GET http://0.0.0.0:5000/api/v1/actors?gender=male
@app.route("/api/v1/actors", methods = ['GET'])
def get_players():
if request.args['gender'] == 'male':
return json.dumps([{ 'id': 23, 'gender': 'male' }], indent=2)
else:
return json.dumps([])
# GET http://0.0.0.0:5000/api/v1/actors/john/
@app.route("/api/v1/actors/<actor_id>/", methods = ['GET'])
def get_player_by_id(actor_id):
return json.dumps({ 'id': actor_id, 'gender': 'male' }, indent=2)
app.run()
我不打算在这里解释 REST,但返回值和端点结构应该给你一个想法。
推荐阅读
- matlab - 谁能给我一些关于 MATLAB 中的 fprintf('How about single quote('')?\n') 的解释?
- r - 如何保存每次优化迭代的系数?
- c++ - C++ 通用模板类算术
- php - 将数据从 php 发送到 ajax(使用 mysqli_fetch_assoc 和 json_encode)
- node.js - 使用app.get调用错误端点时如何处理?
- nginx - NGINX 重定向失败
- postgresql - pgr_nodeNetwork 需要很长时间才能运行
- c# - 安装后将 wpf 应用程序编译为 x64 失败
- android - Android Firebase 数据库混淆
- spring-boot - 安全拦截器不排除 Spring Boot 应用程序中的资源文件夹