Flask Python中的HTTP状态405和Restful API

时间:2017-01-20 02:25:59

标签: python api http flask-restful http-status-code-405

总体目标

对于我没有使用框架的网上商店,我需要定义一条到应用程序的restful API的良好路径。

问题

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

我搜索了不同类型的来源,例如关于HTTP 405错误的论坛帖子:HTTP Status 405 - Method Not Allowed Error for Rest API。但我无法发现这将如何解决我的错误。

我研究了'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错误。

我的项目说明:

在数据库中,我有一个名为“收藏夹”的表,其中包含“ user_id ”和“ product_id 列。在/ Favorites页面上,我想从收藏夹表中加载数据,以显示(特定)用户收藏的项目。 但首先我想从数据库中导入数据。 我想通过从数据库中检索product_id(第一条路线)来做到这一点。后来我想指定在订购时只能购买喜欢的商品。 (orderhistory或由user_id组合)(第二条路线)。

网店的前端是用html / css / javascript制作的,后端是用python烧录的。

问题:

由于此路由到API的代码中的错误导致HTTP 405消息的错误?

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

第一条路线

@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)

非常感谢你!

1 个答案:

答案 0 :(得分:1)

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

只需将POST添加到列表中