Adonis.js api删除路由不工作



我试图击中一个特定的路线:

http://127.0.0.1:3333/store/products?productId=4

但是服务器给我这个错误:

"message": "E_ROUTE_NOT_FOUND: Cannot DELETE:/store/products",
"stack": "HttpException: E_ROUTE_NOT_FOUND: Cannot PATCH:/store/productsn   

除了@crbast提出的观点:您的代码似乎击中了HTTP PATCH方法(https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH),而不是您期望的HTTP DELETE

您没有点击正确的url,您的route是错误的。

您的route.js的正确url是:

http://127.0.0.1:3333/store/products/4
^- Product id

route:

Route.delete('/products/:productId', 'ProductsController.delete')
//                      ^- use : for url parameter
<标题>

路由解释正文数据&Url参数完全不同。

请阅读:URL参数和查询字符串之间的区别是什么?

身体数据请求正文(json).

文档:https://preview.adonisjs.com/guides/http/form-submissions#reading-form-data

示例url:

http://127.0.0.1:3333/products?name=hello

路由示例:

Route.post('/products', 'MyController.myFunction')

控制器:

public async myFunction ({ request }: HttpContextContract) {
const data = request.only(['name'])
// ...
}

Url参数指定动态url参数

文档:https://preview.adonisjs.com/guides/http/routing#dynamic-urls

示例url:

http://127.0.0.1:3333/products/1

路由示例:

Route.post('/products/:id', 'MyController.myFunction')

控制器:

public async myFunction ({ params }: HttpContextContract) {
const id = params.id
// ...
}

最新更新