路由中DELETE方法仅Postman可用,浏览器访问报404求助
问题根源:浏览器地址栏默认发送GET请求,而你的路由只处理DELETE方法
这事儿其实很好理解,我来给你掰扯清楚:
浏览器地址栏的请求本质:不管你在地址栏里输入的URL包含多少“delete”字样,只要是直接回车访问,浏览器都会默认发送GET请求。也就是说,你输入
/api/person/delete/1时,浏览器实际发的是GET /api/person/delete/1,但你的后端路由是专门绑定到DELETE方法上的,根本没有对应的GET路由处理这个路径,所以后端返回404是完全正常的——控制台没报错,是因为后端没收到符合预期的DELETE请求,或者你的后端逻辑里没给未匹配的路由打日志。Postman能正常工作的原因:Postman是专门的API测试工具,它允许你手动指定HTTP请求方法为DELETE。哪怕你禁用所有请求头,只要方法选对了,发送的就是
DELETE /api/person/delete/1,正好命中你写的路由,所以能正常响应。
给你几个浏览器端测试DELETE方法的小技巧:
- 用浏览器开发者工具的Network面板:新建一个请求,手动设置方法为DELETE,填入对应的URL即可。
- 写一个模拟表单:如果你的后端框架支持方法覆盖(比如Spring的
HiddenHttpMethodFilter、Express的method-override中间件),可以写一个POST表单,加上隐藏字段<input type="hidden" name="_method" value="DELETE">,提交后后端会把它识别为DELETE请求。 - 用前端JS代码:通过
fetch或者axios发送DELETE请求,比如:
fetch('/api/person/delete/1', { method: 'DELETE' })
内容的提问来源于stack exchange,提问作者Jan Testowy
相关产品推荐
相关产品推荐

