предисловие
При маршрутизации параметров есть два брата, один называетсяquery, называетсяparmas
Вы сказали, что они не похожи, но использование слишком похоже
Давайте начнем сVue маршрута такжеузел получаетРазница между ними с двух сторон
Параметры в маршрутизации vue
Предположим, теперь нам нужно реализовать переключатель маршрутизации, нажмите, чтобы переключиться наW组件
и передатьidценность иageстоимость
мы используемrouter-linkнаписать
Потом возник ряд сомнений
<router-link :to="{ A: 'xxx', query: { xx:'xxx' }}" />
<router-link :to="{ A: 'xxx', parmas: { xx:'xxx' }}" />
routes:{ ??? }
дляqueryа такжеparmasдля
- А использует имя или путь?
- Как писать маршруты?
- Как выглядит URL-адрес?
- Есть ли скрытые отверстия?
query:
<router-link :to="{ name: 'W', query: { id:'1234',age:'12' }}"/>
<router-link :to="{ path: '/W', query: { id:'1234',age:'12' }}"/>
nameа такжеpathможет быть использован
первыйroutesна основеnameнастраивать
{
path: '/hhhhhhh', //这里可以任意
name: 'W', //这里必须是W
component: W
}
тогда поставьpathдобавить совпадения кurlподниматься
http://localhost:8080/#/hhhhhhh?id=1234&age=12
Последний основан наpathустанавливатьroutes
{
path: '/W', //这里必须是W
name: 'hhhhhhhh', //这里任意
component: W
}
url:http://localhost:8080/#/W?id=1234&age=12
Оба метода могут быть настроеныpathстиль,
Но одинrouter-link toвнутри определения, человек находится вroutesвнутри определения
При получении параметров используйтеthis.$route.query.id
parmas:
<router-link :to="{ name: 'W', params: { id:'1234',age:'12' }}"/>
Используйте только здесьnameНе работаетpath, иначе он будет напрямую проигнорированparamsсодержание в
затем вroutesдобавлено в
{
path:'/W/:id/:age',
name:'W',
component:W
}
здесьnameс вышеуказаннымrouter-linkсерединаnameбыть последовательным
urlзависит от этогоpathнаписаниеhttp://localhost:8080/#/W/1234/12
Уведомление,pathвнутри/wможно записать произвольно как/hhhhhтакже может
но!
/:idа также/:ageнельзя опустить и нельзя переименовать
Если вы этого не напишете, то первый щелчок может реализовать скачок компонента
и может пройтиthis.$route.parmas.idприобретенныйidзначение, но если
Обновите страницу, пройденоidценность иageценность будет потеряна
Из этого также видно, что параметры строже, чем запрос
req.query и req.params в узле
В бэкэнде, чтобы принять интерфейсaxiosпросить
Итак, мы снова встретились с этими ребятами
как этоaxiosКакому способу приема соответствует запрос?
Да и не толькоreq.query,req.params, другой вперемешкуreq.body
Молодец, испортил кастрюлю с кашей
Предположим, что передняя часть теперь использует axios для отправки запроса в заднюю часть, отправляя значение id для запроса данных из задней части.
req.query
axios.get(`/api/?id=1234`)
или
axios.get(`/api`,{ params:{id:'1234' })
Внутри передней части,routerкак отправить как получить
queryОтправь этоthis.$route.queryперенимать
paramsОтправь этоthis.$route.paramsперенимать
Но здесь, хотя второй путьparams
Но мы будем использовать обаreq.query.idпопасть внутрьidстоимость
router.get('/api',function(req,res){
console.log(req.query.id)
.......
})
req.params
Тогда, если вы прямо поставитеidзначение, записанное в отправленноеurlвнутри
axios.get(`/api/1234`)
Эта форма кажется знакомой?
это то же самое, что и вышеparamsизurlОчень похоже, давайте сделаем это в обратном порядке
router.get('/api/:id',function(req,res){
console.log(req.params.id)
.......
})
если бы он так просил
axios.get(`/api/1234-12`)
Средний-или&разделенный
Тогда мы можем также написать это на пути в момент приобретения
router.get('/api/:id-:age',function(req,res){
console.log(req.params.id)
console.log(req.params.age)
.......
})
req.body
Оба вышеперечисленных обрабатываютсяgetпросил
И этот младший брат привык иметь дело сpostпросил
(требуется установкаbody-parserпромежуточное ПО)
axios.post(`/api`,{ id:'1234' })
мы используемreq.bodyполучать
router.get('/api',function(req,res){
console.log(req.body.id)
.......
})
Суммировать
Подводим итогиqueryа такжеparamsРазница между внешней маршрутизацией и внутренним получением
Вещи, которые легко спутать, нужно писать больше и резюмировать больше
Надеюсь, эта статья поможет вам разобраться в сценариях их использования.