总体目标
对于我没有使用框架的网上商店,我需要定义一条到应用程序的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)
非常感谢你!
答案 0 :(得分:1)
如果你能展示你的前端代码那就太好了。但我认为你向后端发了一个帖子请求而没有在你的逻辑中列出methods=['GET', 'POST']
。因此获得了405.
只需将POST添加到列表中