如何通过问号快速路由器api更新sql
Posted
技术标签:
【中文标题】如何通过问号快速路由器api更新sql【英文标题】:How to pass a question mark express router api to update sql 【发布时间】:2020-04-05 16:44:43 【问题描述】:我想使用 End-Point Api (Express NodeJS) 更新 varchar 字段(字符串),但我遇到了问题,我传递了问号等无效输入。
快递端点:
router.get("/updateField/:table/:field/:value/:num/:postid/", function(req, res)
connection.query(
'UPDATE '+ req.params.table +' SET ' + req.params.field +' = '+JSON.stringify(req.params.value) +' where language ='+ req.params.num +' and post_id ='+req.params.postid
这段代码可以正常工作:
http://localhost:3001/api/updateField/posts/TITLE/When/1/1
但这不起作用:
http://localhost:3001/api/updateField/posts/TITLE/When?/1/1
我通过这样的反应发送请求:
fetch(
"http://localhost:3001/api/updateField/" +
table +
"/" +
field +
"/" +
value +
"/" +
lenguage +
"/" +
post_id
);
【问题讨论】:
【参考方案1】:使用javascript函数encodeURIComponent()
转义URL参数中的特殊字符。
例如在你的浏览器控制台上试试这个,你就会明白:
console.log(
"http://localhost:3001/api/updateField/" +
table +
"/" +
field +
"/" +
encodeURIComponent(value) +
"/" +
lenguage +
"/" +
post_id
);
console.log(encodeURIComponent("When?"));
您会看到 URL 中的 "When?" 被替换为 "When%3F"。 在 Node.Js 中,您将收到字符串形式的参数值 "When?"。
要了解更多关于encodeURIComponent()
,请参考this
【讨论】:
+1 完美!但我应该对 express GET 进行解码,但没有必要。 我很高兴它有帮助:)以上是关于如何通过问号快速路由器api更新sql的主要内容,如果未能解决你的问题,请参考以下文章
服务治理最佳实践:如何快速依据请求参数值进行服务路由鉴权限流?