Flask Python 中的 HTTP 状态 405 和 Restful API

HTTP Status 405 and Restful API in Flask Python

总目标

对于我正在开发的没有框架的网上商店,我需要定义一个通往应用程序 restful API 的良好路径。

问题

当我加载页面时(例如:localhost:.../api/favorites),我收到 HTTP 405 错误消息:"Method not allowed".

我搜索了不同类型的资源,例如关于 HTTP 405 错误的论坛 post:。但我无法发现这将如何解决我的错误。

我研究了 'Flask Documentation' 并找到了一个例子:

@app . url_defaults 
  def add_language_code ( endpoint , values ) : 
    if lang_code in values or not g . lang_code : 
      return 
    if app . url_map . is_endpoint_expecting ( endpoint , lang_code ) : 
      values [    lang_code ] = g . lang_code

但我找不到我做错了什么或遗漏了什么,最重要的是:为什么我在这个@api 路由中收到 HTTP 405 错误。

我的项目说明:

在数据库中,我有一个名为“favorites”的 table,其列为“user_id”和'product_id。在 /favorites 页面上,我想从收藏夹 table 加载数据以显示(特定)用户的收藏夹项目。 但首先我只想从数据库中导入数据。 我想通过从数据库中检索 product_id 来做到这一点(第一条路线)。稍后我想指定只有在您订购后才能收藏商品。 (orderhistory or combined by user_id) (second route).

网店的front-end是用html/css/javascript做的,back-end是python做的。

问题:

HTTP 405 消息的错误是由于这段路由到 API 的代码错误造成的吗?

有人可以理解并解释我的确切代码错误,以便我可以通过了解导致错误的原因来尝试修复它吗?

第一条路线

@api.route('/favorites/<int:product_id>', methods = ['GET'])
   def get_favorites(product_id):
      return favorites.get_favorites(product_id)

第二条路线

@api.route('/favorites/<int:user_id>')
   def get_favorites_by_user_id(user_id):
     return favorites.get_favorites_by_user_id(user_id)

非常感谢您!

如果能展示一下你的前端代码就好了。但我认为您向后端发出了 post 请求,但没有在您的逻辑中列出 methods=['GET', 'POST']。因此得到一个 405.

只需将 POST 添加到您的列表中