[英]How to pass multiple parameters as an object in url using react
我試圖通過URL(使用Axios使用ReactJS從URL)將多個參數傳遞給我的api(Koa),以將數據發布到我的數據庫。 這段代碼有效,但是我想知道是否有一種更簡單的方法來傳遞數據,而不是鍵入要插入數據庫的每個值?
我正在向我的數據庫添加建議時間,如下所示:
在ReactJs文件中:
axios.post(`/Advising/AddTime/${idValue}/${dayValue}/${startValue}/${endValue}/${timeValue}`)
在我的Koa(node.js)文件中:
AdvisingRouter.post('/AddTime/:id/:day/:starttime/:endtime/:timeblock', AdvisingController.addTimes, (err) => console.log("routers.js: AdvisingRouter error:", err));
最后是我的控制器:
class AdvisingController {
async addTimes(ctx) {
return new Promise((resolve, reject) => {
let query = "INSERT INTO AdvisingTimes (id, Day, StartTime, EndTime, TimeBlock) VALUES (?, ?, ?, ?, ?);";
console.log('About to run this query.', query);
dbConnection.query(
{
sql: query,
values: [ctx.params.id, ctx.params.day, ctx.params.starttime, ctx.params.endtime, ctx.params.timeblock]
}, (error) => {
if (error) {
return reject(error);
}
}
)
}).catch(err => {
ctx.body = {
status: "Failed",
error: err,
user: null
};
});
}
鑒於您正在使用POST
那么您始終可以將數據作為有效載荷的一部分發送
axios.post('/Advising/AddTime/', {
id,
day,
starttime,
endtime,
timeblock
});
然后在后端,您可以通過ctx.request.body
訪問數據
注意-您需要包含諸如koa-body之類的body解析器
我使用的有用功能:
const insertParams = (url, params) => { // url is string, params is object
let paramUrl = url;
const copyParams = Object.assign({}, params);
Object.keys(copyParams).forEach(key => {
const currentParam = copyParams[key];
if (paramUrl.includes(key)) delete copyParams[key];
paramUrl = paramUrl.replace(`:${key}`, currentParam);
});
return paramUrl;
};
對於您的情況,只需調用insertParams:
const url = 'http://your.url.com/';
const params = { id: 'id123', day: 'friday', starttime: new Date(), endtime: new Date(), timeblock: 'timeblock' };
const urlWithParams = insertParams(url, params);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.