1.处理postData 2.新建博客接口
1.处理postData
app.js
const handleBlogRouter
= require('./src/router/blog')
const handleUserRouter
= require('./src/router/user')
const querystring
= require('querystring')
const getPostData = (req
) => {
const promise
= new Promise((resolve
, reject
) => {
if (req
.method
!== 'POST') {
resolve({})
return
}
if (req
.headers
['content-type'] !== 'application/json') {
resolve({})
return
}
let postData
= ''
req
.on('data', chunk
=> {
postData
+= chunk
.toString()
})
req
.on('end', () => {
if (!postData
) {
resolve({})
return
}
resolve(
JSON.parse(postData
)
)
})
})
return promise
}
const serverHandle = (req
, res
) => {
res
.setHeader('Content-type', 'application/json')
const url
= req
.url
req
.path
= url
.split('?')[0]
req
.query
= querystring
.parse(url
.split('?')[1])
getPostData(req
).then(postData
=> {
req
.body
= postData
const blogData
= handleBlogRouter(req
,res
)
if (blogData
) {
res
.end(
JSON.stringify(blogData
)
)
return
}
const userData
= handleUserRouter(req
,res
)
if (userData
) {
res
.end(
JSON.stringify(userData
)
)
return
}
res
.writeHead(404, {"Content-type": "text/plain"})
res
.write("404 not Found\n")
res
.end()
})
}
module
.exports
= serverHandle
用于处理 post data=>getPostData()调用getPostData(),把resolve里的参数赋值给req.body,包裹blog路由和user路由,使他们能使用req.body 对照注释
2.新建博客接口
接口路由 router/blog.js
if (method
=== 'POST' && req
.path
==='/api/blog/new') {
const data
= newBlog(req
.body
)
return new SuccessModel(data
)
}
新建博客处理逻辑 controller/blog.js
const newBlog = (blogData
= {}) => {
console
.log('newBlog blogData...',blogData
)
return {
id
: 3
}
}