01——开发博客项目之接口05

    科技2026-04-06  10

    1.处理postData 2.新建博客接口

    1.处理postData

    app.js const handleBlogRouter = require('./src/router/blog') const handleUserRouter = require('./src/router/user') const querystring = require('querystring') // 用于处理 post data 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) => { // 设置返回格式 JSON res.setHeader('Content-type', 'application/json') // 获取path const url = req.url req.path = url.split('?')[0] // 获取路由 // 解析 query req.query = querystring.parse(url.split('?')[1]) getPostData(req).then(postData => { req.body = postData // 处理 blog 路由 const blogData = handleBlogRouter(req,res) if (blogData) { res.end( JSON.stringify(blogData) ) return } // 处理 user 路由 const userData = handleUserRouter(req,res) if (userData) { res.end( JSON.stringify(userData) ) return } // 未命中路由返回404 res.writeHead(404, {"Content-type": "text/plain"}) res.write("404 not Found\n") res.end() }) } module.exports = serverHandle // process 顾名思义就是进程 //该对象表示Node所处的当前进程,允许开发者与该进程互动 // env: process.env.NODE_ENV 用于处理 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

    // 新建博客处理逻辑 // blogData = {} blogData没有值时默认为空 const newBlog = (blogData = {}) => { // blogData 是一个博客对象,包含title content 属性 console.log('newBlog blogData...',blogData) return { id: 3 } }

    Processed: 0.013, SQL: 9