【发布时间】:2021-11-15 07:50:19
【问题描述】:
我正在尝试使用 json-server 构建一个假 api,但遇到了一个问题。我不知道我是否遗漏了什么,或者我只是遇到了一个错误。
基本上,如果我在请求作为单个对象接收的数据时发送一个 url 参数,那么当我尝试呈现该数据时,我可以很好地读取我的参数。
但如果我收到的数据是一个数组,那么我在尝试读取该参数时会得到未定义。
这些是我的文件(不要介意这背后的逻辑,我简化了一些事情以减少不必要的信息)。
server.js
const jsonServer = require('json-server')
const server = jsonServer.create()
const router = jsonServer.router(require('./db.js')())
const middlewares = jsonServer.defaults()
server.use(middlewares)
server.use(jsonServer.bodyParser)
router.render = (req, res) => {
console.log("User try query: " + req.query.user)
console.log("User try param: " + req.params['user'])
if (req.url.startsWith('/slack_users_info')) {
res.jsonp({
user: res.locals.data
})
} else if (req.url.startsWith('/slack_users_info2')) {
res.jsonp({
user: res.locals.data
})
} else {
res.jsonp(res.locals.data)
}
}
server.use(router)
// Run server on indicated port.
server.listen(port = 3000, () => {
console.log('JSON Server is running')
console.log('http://localhost:' + port)
})
db.js
var faker = require('faker');
module.exports = function () {
var data = {
slack_users_info: slack_users_info(),
slack_users_info2: slack_users_info2()
}
return data;
}
function slack_users_info() {
subdata = []
for (var i = 0; i < 10; i++) {
subdata.push({
id: "user_id_" + i,
})
}
return subdata;
}
function slack_users_info2() {
subdata = {
id: "user_id"
}
return subdata;
}
我正在使用npm start。
如果我请求数组,我会得到未定义:
GET http://localhost:3000/slack_users_info?user=user_id_0
然后我得到:
User try query: undefined
User try param: undefined
如果我请求单个对象,我会得到预期的参数:
GET http://localhost:3000/slack_users_info2?user=user_id_0
然后我得到:
User try query: user_id_0
User try param: undefined
在这两种情况下都正确接收到响应正文,我只是无法读取第一种情况下的参数。
这是有原因的吗?
【问题讨论】: