koa里如何设置统一的返回状态码?
1.本人新手,看了好多文档,用koa2
+koa-generator
+monogoDB
搭建了个demo,试图去写一些简单的接口。
但是问题来了,如何统一设置返回的格式呢?或者我的项目目录需要如何设置,结构需要怎么样的优化?
目前的目录:
2.例如:查询用户的接口,代码如下
const router = require('koa-router')()
const db = require('monk')('127.0.0.1:27017/test1') //中间件连接数据库
router.prefix('/queryUsers') //接口前缀
let table1Data = db.get('table1');
router.get('/', async function (ctx, next) {
let getParams = ctx.request.query;
ctx.response.type = 'application/json';
if(getParams._id){
ctx.body = {
code:200,
msg:"success",
content:await table1Data.find({_id:getParams._id})
}
}else {
ctx.body = {
code:0,
msg:"error",
content:'参数错误'
}
}
})
module.exports = router
3.通过get请求可以查询到数据,但是如何统一设置返回的格式呢?
总不能每个接口都单独这样写:
if(getParams._id){
ctx.body = {
code:200,
msg:"success",
content:await table1Data.find({_id:getParams._id})
}
}else {
ctx.body = {
code:0,
msg:"error",
content:'参数错误'
}
}
4.或者有没有其他的优化建议。蟹蟹各位大佬
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
封装一个额外组件,我这边刚好写一个类似的。
使用的时候,code想用number也行,自己重新用数组重新封装一下,问题不大,在编程的时候,可以随时到这个文件注册新的返回码和解释。
使用的时候只需要
import R from responseBeautifier
,用R.set(data)即可获得返回的数据结构了
controller怎么设置还是看你自己。
其实这个reponseBeautifier还比较简单,有特殊需求也可以写一个完整结构,每次需要的时候创建一个新对象可能更好,比较符合ctx.body的设定
统一返回格式换句话说就是有一个返回格式类或处理函数。比如我可以在之前加个中间件定义一个
ctx.state.success
的方法,然后ctx.state.success(content)
,方式都差不多。