gpt4 book ai didi

python - flask-restful 嵌套资源

转载 作者:太空狗 更新时间:2023-10-29 23:58:54 27 4
gpt4 key购买 nike

我正在重构我的 rest api 服务器以使用 Flask-RESTful,并且我对某些特定情况有一些疑问,在这些情况下我需要获取属于另一个的资源列表。像这样的事情:

/api/v1/users/john/orders

你会如何设计这个?因为如果我有一个名为 Orders 的资源,我需要知道我必须从哪个用户那里获得订单。但是我怎样才能让资源知道用户呢?我没有看到任何可以为资源指定参数的 __ init __ 方法。

我在注册 Orders 资源时考虑过做这样的事情:

api.add_resources(Orders, '/api/v1/users/<string:username>/orders')

但是我如何访问 Orders 资源中的 string:username??

我想一个解决方案是:

api.add_resources(Orders, '/api/v1/orders/') 

并发送指定用户的查询参数,我想从中获取订单,但我想知道是否可以像上面的例子那样做。

最佳答案

好吧,我终于明白了。这是解决方案

假设我们有一个可以按名称查看的用户端点,并且用户有订单也可以查询。订单查询将是一个通用的东西,它只需要相应的查询参数,并且需要知道它必须在哪个用户上查找订单:

from flask import Flask
from flask_restful import Api


app = Flask(__name__)
app.config['DEBUG'] = True

from views import *

api = Api(app)
api.add_resource(OrdersQuery, '/api/v1/user/<string:name>/orders/query/')

定义资源类时:

class OrdersQuery(Resource):
def get(self, name):
## do something with name, like retrieving the user
## probably grab the orders and apply the query with the params from the url
return jsonify({
'result_list': [..something in here..]
})

如您所见,您正在使用 url 的可变部分(用户名)作为查询订单端点。

关于python - flask-restful 嵌套资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25595868/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com