使用Flask创建端点参数的约定?

时间:2019-06-30 22:51:29

标签: rest flask

我的REST API知识不是最新的。当我们在实现REST API时应用过滤器或排序时,我知道我们曾经将<div class="container"> <div class="circle"> <h2>I am a parent/care giver</h2> </div> <div class="circle"> <h2>I am a teenager</h2> </div> </div>?放置到端点,如下所示:

&

但是,当我看到Flask示例时,我从未见过有人将这些参数添加到端点,例如

/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实现REST API时,应用过滤器或排序的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

对于简单的GET请求,有几种方法可以传递查询参数:

  1. 作为路径参数
  2. 作为查询参数

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,但是返回值和端点结构应该可以使您有所了解。