混同しやすい-論queryとparamsの前後端の違い
一.Vueでのルーティングのパラメータ
ルーティング切替を実現する必要があると仮定し、クリックして
queryとparamsにとって: Aかpath か routersはどのように を書きます url長さはどうですか 何か隠れた穴がありますか 1. name: path:
どちらの方法も、受信パラメータ:受信パラメータの場合は を用いる.
2.
ここでは
次に、
ここでの
なお、
書かないと、最初のクリックでコンポーネントジャンプが実現され、
二.ノードのreq.queryとreq.params
バックエンドでは、フロントエンドの
どのような
フロントエンドがaxiosでバックエンドに要求を送信し、id値がバックエンドのデータを要求すると仮定する.
1.
または
フロントエンドでは、 である. である.
しかし、ここでは、2つ目の方法には
2.
では、
この形が見覚えがあるかどうか見てみましょう.上の
もしそれがそう要求されたら
中間は
取得時のパスにもこう書くことができます
3.
上記の2つはいずれも
転載先:
混同しやすい-論queryとparamsの前後端の違い
ルーティング切替を実現する必要があると仮定し、クリックして
W
に切り替える.id
の値とage
の値を渡します.router-link
を使用して書きます.<router-link :to="{A: 'xxx', query: {xx: 'xxx'}}" />
<router-link :to="{A: 'xxx', params: {xx: 'xxx'}}" />
routers:{???}
queryとparamsにとって:
query
: name
もpath
も使えます.<router-link :to="{ name: 'W', query: { id:'1234',age:'12' }}"/>
routes
は、name
の設定に基づいています.{
path: '/hhhhhhh', //
name: 'W', // W
component: W
}
path
マッチングをurl
に追加します.http://localhost:8080/#/hhhhhhh?id=1234&age=12
<router-link :to="{ path: '/W', query: { id:'1234',age:'12' }}"/>
path
に基づいてroutes
を設定します.{
path: '/W', // W
name: 'hhhhhhhh', //
component: W
}
url
: http://localhost:8080/#/W?id=1234&age=12
どちらの方法も、
path
のスタイルをカスタマイズできますが、1つはrouter-link to
で定義され、1つはroutes
で定義されています.this.$route.query.id
2.
parmas
ここでは
name
しか使えません.path
は使えません.そうしないと、params
の内容を直接無視します.<router-link :to="{ name: 'W', params: { id:'1234',age:'12' }}"/>
次に、
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
の値が失われます.これからもparamsがqueryより厳しいことがわかります.二.ノードのreq.queryとreq.params
バックエンドでは、フロントエンドの
axios
リクエストを受け入れるため、query、paramsに接触します.どのような
axios
リクエストがどのような受け入れ方に対応しているか.req.query
、req.params
だけでなく、req.body
も増えました.フロントエンドがaxiosでバックエンドに要求を送信し、id値がバックエンドのデータを要求すると仮定する.
1.
req.query
axios.get(`/api/?id=1234`)
または
axios.get(`/api`,{ params:{id:'1234' })
フロントエンドでは、
router
がどのように送信されたかはどのように受け取ります.query
送信はthis.$route.query
受信params
送信はthis.$route.params
受信しかし、ここでは、2つ目の方法には
params
がありますが、この2つはreq.query.id
でid
の値を取得します.router.get('/api',function(req,res){
console.log(req.query.id)
.......
})
2.
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)
.......
})
3.
req.body
上記の2つはいずれも
get
リクエストを処理し、req.body
はpost
リクエストを処理するために使用される.(body-parser
ミドルウェアを取り付ける必要がある)axios.post(`/api`,{ id:'1234' })
req.body
で受け取りますrouter.get('/api',function(req,res){
console.log(req.body.id)
.......
})
転載先:
混同しやすい-論queryとparamsの前後端の違い