【问题标题】:google app engine 405 http DELETE with AngularJS $resource谷歌应用引擎 405 http DELETE with AngularJS $resource
【发布时间】:2014-04-04 13:58:09
【问题描述】:

我正在使用 GAE Python(带有 webapp2 框架)和 AngularJS。

我在 GAE 上遇到了路由问题。事实上,我在 Angular $resource 中有一个动作,允许删除我的数据存储区中的对象。

这是我的 Angular $resource 代码:

deleteImage :
        {
            method      : 'DELETE',
            isArray     :  false,
            format      : '.json',
            url         : '/api/hairdressers/:hrd_id/images/:ima_id',
            params      :
            {
            }
        },

当我调用这个方法时,它会用 DELETE 动词调用这个 url:

mysite.com/api/hairdresser/877848/images/5451681

在我的后端,我有一条类似的路线:

webapp2.Route(r'/api/hairdressers/<hrd_id:(\d+)>/images/<ima_id:(\d+)>', handler=HairdresserRestHandler, handler_method='hairdresser_delete_image', name='HairdresserDeleteImageRestHandler', methods=['DELETE']),

该路由调用 HairdresserRestHandler 中的 hairdresser_delete_image 方法。

但我在调用此 URL 时收到 405 Method Not Allowed 错误消息。

我还有其他以/api/hairdressers/ 开头的路线,但还有其他参数和动词。有人知道我做错了什么吗?

【问题讨论】:

    标签: python angularjs google-app-engine


    【解决方案1】:

    我猜的问题出在你的 python 服务器代码中。

    删除图像的处理程序应如下所示,注意我定义了一个名为 delete 而不是 get 或其他任何名称的函数,这将允许执行该方法。

    class HairdresserDeleteImageRestHandler(webapp2.RequestHandler):
    def delete(self):
        self.response.write('I will delete an image!')
    

    另一方面,请确保您的网址匹配,我注意到您的路由路径中有deleteimage,但您调用的网址中没有/api/hairdresser/877848/images/5451681

    【讨论】:

    • 感谢您的回答!我实际上正在使用 handler_method= 属性,它允许将请求重定向到我的处理程序中的特定函数!实际上,我的 $resource 和 python 代码中没有相同的 url,我更正了它,但仍然有同样的问题......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 2023-03-30
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多