Adonisjs 中的路由可选参数
Routing optional parameters in Adonisjs
尝试在 adonisjs 中使用可选参数进行路由时遇到问题。当我写不同的端点时,参数的结果也不同
这是我的路由器代码:
Route.post('product/:id_product?', 'ProductController.addProduct')
如果我在邮递员中向此端点发送参数
http://localhost:3333/shoping/product //the result of parameter is null
or
http://localhost:3333/shoping/product/1 //the result of parameter is 1
可以在 console.log
中读取该参数,但如果我尝试 运行 这个端点:
http://localhost:3333/shoping/product //the result of parameter is null
or
http://localhost:3333/shoping/product?id_product=1 //the result of parameter also null
console.log
的结果只是 null。那么我的路线有什么问题?
当你创建一条路线时,这条路线路径是这样的
http://localhost:3333/shoping/product/1
当你像这样在控制器中得到这个id_product时
console.log(params.id_product)
所以可以获得 1 或者当你使用这个
传入路径时
http://localhost:3333/shoping/product?id_product=1
这不会给你任何参数,因为在这种情况下 id_product 是一个查询参数,如果你在这个路径中得到 id_product 那么你会得到这样的
const queryData = request.get();
console.log(queryData.id_product)
所以得到 1 或当你通过这个打印时
有两个不同点:
url 示例:
http://localhost:3333/shoping/product?id_product=1
http://localhost:3333/shoping/product?id_product=1&name=test
路线示例:shoping/product
控制器集成:
test ({request}) {
const product = request.only(['id_product', 'name'])
console.info(product.id_product) //output 1
}
url 示例:
http://localhost:3333/shoping/product/1
路线示例:shoping/product/:id_product?
控制器集成:
test ({params}) {
const id_product = params.id_product
console.info(id_product ) //output 1
}
尝试在 adonisjs 中使用可选参数进行路由时遇到问题。当我写不同的端点时,参数的结果也不同
这是我的路由器代码:
Route.post('product/:id_product?', 'ProductController.addProduct')
如果我在邮递员中向此端点发送参数
http://localhost:3333/shoping/product //the result of parameter is null
or
http://localhost:3333/shoping/product/1 //the result of parameter is 1
可以在 console.log
中读取该参数,但如果我尝试 运行 这个端点:
http://localhost:3333/shoping/product //the result of parameter is null
or
http://localhost:3333/shoping/product?id_product=1 //the result of parameter also null
console.log
的结果只是 null。那么我的路线有什么问题?
当你创建一条路线时,这条路线路径是这样的
http://localhost:3333/shoping/product/1
当你像这样在控制器中得到这个id_product时
console.log(params.id_product)
所以可以获得 1 或者当你使用这个
http://localhost:3333/shoping/product?id_product=1
这不会给你任何参数,因为在这种情况下 id_product 是一个查询参数,如果你在这个路径中得到 id_product 那么你会得到这样的
const queryData = request.get();
console.log(queryData.id_product)
所以得到 1 或当你通过这个打印时
有两个不同点:
url 示例:
http://localhost:3333/shoping/product?id_product=1
http://localhost:3333/shoping/product?id_product=1&name=test
路线示例:shoping/product
控制器集成:
test ({request}) {
const product = request.only(['id_product', 'name'])
console.info(product.id_product) //output 1
}
url 示例:
http://localhost:3333/shoping/product/1
路线示例:shoping/product/:id_product?
控制器集成:
test ({params}) {
const id_product = params.id_product
console.info(id_product ) //output 1
}