Python `如果使用蓝图,则fields.Url('some_resource')`不会在末尾附加'id'

Python `如果使用蓝图,则fields.Url('some_resource')`不会在末尾附加'id',python,rest,flask,flask-restful,Python,Rest,Flask,Flask Restful,我正在使用蓝图,我用这一行创建蓝图: api\u bp=蓝图“api”,名称__ 通过以下行添加一些_资源并注册blueprint: rest_api = Api() rest_api.init_app(api_bp) rest_api.add_resource(SomeResourceApi, '/some_resources', '/some_resources/<int:some_resource_id>', endpoint='some_resources') app.reg

我正在使用蓝图,我用这一行创建蓝图:

api\u bp=蓝图“api”,名称__

通过以下行添加一些_资源并注册blueprint:

rest_api = Api()
rest_api.init_app(api_bp)
rest_api.add_resource(SomeResourceApi, '/some_resources', '/some_resources/<int:some_resource_id>', endpoint='some_resources')
app.register_blueprint(api_bp, url_prefix='/some/api/v1.0')
虽然这样做是为了达到目的,但它看起来有点粗糙

当我使用fields.Url时,没有在响应中附加ID,这是我做错了什么吗

库版本详细信息:

烧瓶==1.0.2

烧瓶静止==0.3.6

炼金术==2.3.2

SQLAlchemy==1.2.10


相应的github问题:

我认为您不应该通过相同的资源类来路由对项目/某些资源列表的请求以及单个项目/某些资源/:id的详细信息


Url只是在幕后调用,可能只是使用它找到的第一个匹配资源路径。也许,如果您交换了路径的顺序以添加资源,它会起作用。

好的,我想我误用了对多个URL的支持。从这里获得了动机,我们能够根据id的无检查来确定请求是针对单个方法中的单个资源还是多个资源。将尝试针对列表和单个资源使用多个资源类。Thankswell,为单个和列表项提供单独的资源类确实解决了这个问题,但代价是将我的路径参数命名为,而不是命名为,从而在相应的get方法中进行相同的更改,即getself,id而不是getself,some_resource_id。如果我将其命名为id以外的任何名称,我收到错误:无法为值为[]的端点“api.some_resource”生成url。您是否忘记指定值['some_resource_id']?我是否需要做一些其他的事情,以便我可以将我的变量命名为不同于id的名称?这是意料之中的,您的对象具有id属性,而没有some\u resource\u id属性。路由中URL参数的名称必须与fields.URL的model属性相对应,以确定正确的URL。
"uri": "/some/api/v1.0/some_resources",
"id": 11