const http = require('http')
const port = 2333
const apiList = {
'/api/getUserInfo': {
method: 'get',
data: {
code: 0,
data: {
personId: '1024',
personName: 'Tom'
},
msg: '收到了你的请求,这是一段响应的文本内容'
}
}
}
const getRequestParams = (request, callback, paramsStr) => {
let params = paramsStr ? {} : ''
if (paramsStr) {
paramsStr.split('&').forEach(item => {
const [key, value] = item.split('=')
params[key] = value
})
callback(params)
return
}
request.on('data', chunk => {
params += chunk
})
request.on('end', () => {
params = JSON.parse(params)
callback(params)
})
}
let timer = null
const updateTimer = () => {
timer && clearTimeout(timer)
timer = setTimeout(() => {
console.log('自动关闭服务器连接')
server.close()
timer = null
}, 10000)
}
const server = http.createServer((request, response) => {
const { url, method: reqMethod } = request
console.log('http request message: ', url, reqMethod)
const [path, paramsStr] = url.split('?')
const apiInfo = apiList[path]
const packResponse = (code = 404, apiInfo = {}, params = {}) => {
console.log('request params: ', params)
const data = apiInfo.data
response.statusCode = code
response.setHeader('Content-Type', 'application/json')
response.end(JSON.stringify(data))
}
updateTimer()
if (apiInfo) {
const { method } = apiInfo
if (reqMethod === method.toUpperCase()) {
getRequestParams(request, packResponse.bind(null, 200, apiInfo), paramsStr)
} else {
packResponse(405)
}
} else {
packResponse()
}
})
server.listen(port, () => {
console.log(`服务器运行在 http://127.0.0.1:${port}/`)
updateTimer()
})