一、环境搭建
-
创建项目目录
注意事项:
1)bin目录下的www.js应对应package.json中的"main"
-
下载插件(开发环境)
注意事项
1)package.json中需要配置下面代码
-
cross-env NODE_ENV=dev(设置当前环境是开发环境)
-
nodemon ./bin/www.js(检测入口文件是否发生变化,并再次执行该文件代码)此时启动项目的命令为npm run dev
-
写入口文件www.js
const http = require('http')
//加载app.js文件(即server具体实现)
const serverHandle = require('../app.js')
//监听端口
const PORT = 8000
const server = http.createServer(serverHandle)
server.listen(PORT,() => {
console.log("OK");
})
- server具体实现
const serverHandle = (req, res) => {
//设置返回格式
res.setHeader('Content-type','application/json')
///下面部分先测试数据是否调通/
//设置返回数据
const returnData = {
name:"姓名",
title:"哈哈123",
// 获取当前开发环境
env:process.env.NODE_ENV
}
//返回数据
res.end(
JSON.stringify(returnData)
)
/
}
module.exports=serverHandle
- 测试
二、初始化路由(不使用框架,后面学习将使用框架express和koa2进行优化)
接口设计
描述 | 接口 | 方法 | url参数 | 备注 |
---|---|---|---|---|
获取博客列表 | /api/blog/list | get | author作者,keyword搜索关键字 | 参数为空时,则不进行查询过滤 |
获取一篇博客的内容 | /api/blog/detail | get | id | |
新增一篇博客 | /api/blog/new | post | post中有新增的信息 | |
更新一篇博客 | /api/blog/update | post | id | postData中有更新的内容 |
删除一篇博客 | /api/blog/del | post | id | |
登录 | /api/user/login | post | postData中有用户名和密码 |
项目目录
- 在项目中创建文件用于存放路由
- 在blog.js文件中(没有考虑路由优化的前提下)
const handleBlogRouter = (req, res) => {
const method = req.method
//获取博客列表
if (method === "GET" && req.path === "/api/blog/list") {
return {
msg: "这是获取博客列表的接口"
}
}
//获取博客详情
if (method === "GET" && req.path === "/api/blog/detail") {
return {
msg: "这是获取博客详情的接口"
}
}
//新增一篇博客
if (method === "POST" && req.path === "/api/blog/new") {
return {
msg: "这是新增一篇博客的接口"
}
}
//更新一篇博客
if (method === "POST" && req.path === "/api/blog/update") {
return {
msg: "这是更新一篇博客的接口"
}
}
//删除一篇博客
if (req.method === "POST" && req.path === "/api/blog/del") {
return {
msg: "这是删除一篇博客的接口"
}
}
}
module.exports = handleBlogRouter
- 在user.js文件中
const handleUserRouter = (req, res) => {
const method = req.method
//登录
if(method === "POST" && req.path === "/api/user/login") {
return {
msg: "这是用户登录的接口"
}
}
}
module.exports = handleUserRouter
- 在app.js文件中(即server具体实现)对路由进行转发
//加载博客,用户路由文件
const handleBlogRouter = require('./src/router/blog.js')
const handleUserRouter = require('./src/router/user.js')
const serverHandle = (req, res) => {
const url = req.url
req.path = url.split('?')[0]
//设置返回格式
res.setHeader('Content-type','application/json')
//处理 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
- 测试
测试没有问题(部分截图)