传送门:学习node.js服务开发这一篇就够了系列文章
json接口的开发是平常最多的开发需求。分三步走,router层定义路由。将路由映射为controller,controller控制器层调用service业务逻辑层,来完成业务逻辑。
1.Router层
module.exports = (app) => {
const Router = app.router
Router.get("/api/users", app.controller.user.getUsers)
}
2.Controller层
// app/controller/user.js
const {Controller} = require('egg')
class User extends Controller {
async getUsers() {
const {pageNum, pageSize} = ctx.query
ctx.body = this.ctx.service.userService.queryUser(pageNum, pageSize)
}
}
module.exports = User
3.Service层
// app/service/user_service.js
const {Service} = requrie('egg')
class UserService extends Service {
async queryUser(pageNum, pageSize) {
// 具体的业务逻辑,分页参数处理。数据库查询等。返回User列表
}
}
module.exports = UserService
上面三步可以完成一个基本的http+json接口的开发。下面是需要注意的几点
4.获取请求参数
4.1 获取查询字符串参数
如/api/users?pageNum=1&pageSize=10
中的pageNum
和pageSize
通过ctx.query
可以获取查询字符串对象参数,上面的例子中可以拿到对象
const { pageNum, pageSize } = ctx.query
4.2 http请求体body的获取
通过ctx.request.body
获取请求对象
const {userName} = ctx.request.body