xpt*_*xpt 3 parameters routes optional-parameters express
我一直想知道下面的是什么符号,
GET /user/:name/books/:title
以及如何解释它,直到最近,当我了解到它们是 Express 路线的形式,并且带有的":"
是 Express 路线参数时。
所以这是我找不到答案的问题,比如说,
问题是,如果大多数甚至所有参数都是可选的怎么办?Express路线如何处理?
问题是,对于 HTTP 查询参数,例如
https://example.org/?page=2&limit=3&sort=price
查询参数的顺序可以是任意的,而对于 Express 路线,在我看来,路线参数必须以非常严格的方式/顺序指定。那么如果所有路由参数都是可选的,而我只需要指定最后一个呢?(无论你如何排列路由参数顺序,总会有最后一个)
我确实了解到 Express 可以处理querystring.parse(parsedUrl.query)
,但我问这个问题的原因确实是因为这个 - https://github.com/go Fiber /docs/blob/master/original/routing.md#parameters
即,go Fiber 遵循/使用 Express 路由约定来处理路由参数,并且我需要所有路由参数都是可选的。
该怎么处理呢?
您在 URL 中发送的每个变量:
都会通过以下方式接收req.params
\n\n此属性是一个对象,其中包含映射到命名路由 \xe2\x80\x9cparameters\xe2\x80\x9d 的属性。例如,如果您有路由 /user/:name,则 \xe2\x80\x9cname\xe2\x80\x9d 属性可用作 req.params.name。该对象默认为 {}。
\n
// will be available in route in req.params object\nrouter.get(\'/somepath/with/:variable\', (req ,res) => {\n console.log(req.params.variable);\n});\n
Run Code Online (Sandbox Code Playgroud)\n您在 URL 中发送的每个变量?
(查询参数)都将在以下位置可用req.query
\n\n此属性是一个对象,其中包含路由中每个查询字符串参数的属性。当查询解析器设置为禁用时,它是一个空对象{},否则它是配置的查询解析器的结果。
\n
// will be available in route in req.query object\nrouter.get(\'/somepath/with/variables?page=2&limit=3&sort=price\', (req ,res) => {\n console.log(req.query.page);\n console.log(req.query.limit);\n console.log(req.query.sort);\n});\n
Run Code Online (Sandbox Code Playgroud)\n您通过 ajax 或表单或类似方式发送的每个数据都将被接收req.body
\n\n包含请求正文中提交的数据的键值对。默认情况下,它是未定义的,当您使用正文解析中间件(例如express.json()或express.urlencoded())时,它会被填充。
\n
// will be available in route in req.body object\nrouter.get(\'/somepath/with/variables\', (req ,res) => {\n // send in request body like for example form data:\n console.log(req.body.variable1) // i.e\n});\n
Run Code Online (Sandbox Code Playgroud)\n这是以三种不同方式收集数据的三个对象。\n您应该选择适合您场景的方式。我想 Route params 不是正确的选择,req.query
当变量随机到达时你应该使用它,但是一旦你在相应的对象中解析了它们,你应该知道如何处理它们。
我希望我理解了这个问题并澄清了。
\n 归档时间: |
|
查看次数: |
3231 次 |
最近记录: |