【问题标题】:Delete method from routing works only via Postman, not browser从路由中删除方法仅适用于 Postman,不适用于浏览器
【发布时间】:2018-02-12 22:25:07
【问题描述】:

我已经实现了简单的路由:

    return RouterFunctions
            .nest(path("/api/person"),
                    route(GET("/"), personService::findAllPeople)
                            .andRoute(GET("/{id}"), personService::findOnePerson)
                            .andRoute(POST("/add"), personService::addPerson)
                            .andRoute(DELETE("/delete/{id}"), personService::deletePerson)
                            .andRoute(PUT("/update"), personService::updatePerson));

最有趣的方法是DELETE,因为它只能通过Postman 工作。当我尝试在浏览器中输入/api/person/delete/1 时,它会在控制台中抛出404 而没有任何错误——有人知道为什么吗?在 Postman 中,我禁用了所有发送的标题,但 Postman 仍然可以工作,浏览器不能。

【问题讨论】:

  • "...尝试输入 /api/person/delete/1..." 你在哪里输入这个?
  • 我在浏览器的url输入中输入
  • 那行不通;您的浏览器将使用 GET 动词而不是 DELETE 发送请求。由于您没有匹配的 GET 路由,因此它返回 404。无论如何,您真的,真的不希望通过 GET 请求删除某些内容。
  • 您需要通过 javascript/ajax 或任何其他正在使用您的 API 的方式发送 DELETE 请求。请参阅stackoverflow.com/a/786074/123422 了解原因。
  • @PaulAbbott 您能否将此评论作为答案?阅读 cmets 中回答的问题确实是浪费时间。

标签: java spring spring-webflux


【解决方案1】:

正如@PaulAbbot 所说,在浏览器的地址栏中输入 URL 只会发出 GET 请求。

如果您希望从浏览器发送 DELETE 请求,您应该使用 JavaScript 来执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 2019-04-24
    • 2018-03-25
    相关资源
    最近更新 更多