Маршрутизация необязательных параметров в Adonisjs - PullRequest
0 голосов
/ 14 октября 2019

У меня проблема при попытке сделать маршрутизацию с необязательными параметрами в 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 . Так что не так с моим маршрутом?

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Существует 2 различия:

  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
}
0 голосов
/ 14 октября 2019

когда вы создаете маршрут, этот путь маршрута, как этот

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 или когда вы передадите эту печать

...