node从入门到放弃系列之(4)koa2项目创建及初步开发

demo代码=》koa2-server项目代码
如果git登不上可以换gitee=》koa2-server项目代码

koa2项目创建

我创建是koa2的项目,因为网上一搜全是koa2的资料,1的资料不好找,会增加学习的成本,降低学习的效率。创建命令:koa koa2-server。

最原始的目录如下:(借的别人的图)
在这里插入图片描述
启动起来是这个的
启动
然后添加了prettierrc、eslint等配置文件,形成最终的目录如下:

koa2-server
├─.editorconfig
├─.eslintrc.js
├─.prettierrc
├─app.js
├─mysql.js
├─package-lock.json
├─package.json
├─readme.md
├─treer.md
├─views
|   ├─error.pug
|   ├─index.pug
|   └layout.pug
├─routes
|   ├─index.js
|   └users.js
├─public
|   ├─stylesheets
|   |      └style.css
|   ├─javascripts
|   ├─images
├─bin
|  └www

作为一个写代码有强迫症的人来说,当开始创建项目,规范的制定是一定要有的,所以我创建完项目就加上了prettierrc、eslint两个文件。
至于这两个文件的使用介绍可以看下:.eslintrc配置目录及配置项的使用.prettierrc代码格式化配置介绍
项目创建好了,代码规范制定好了,接下来就是服务的初步开发了。

初步开发

创建返回实体

这方面如果不想做的,可以直接引koa2-response就行,具体的使用可以上npm上查看=》koa2-response源代码=》koa2-response。很简单,没几个文件,所以我选择直接复制过来,就不用他了,毕竟这样后面改起来也方便。
在根目录下新建middleware/response文件夹,文件夹里创建index.js和response.js文件
index.js对外发布中间件方法的统一文件,同时也要满足app.use()里的内容需要是一个函数的要求


const { success, error } = require('./response');

module.exports = async (ctx, next) => {
  ctx.success = success.bind(null, ctx);
  ctx.error = error.bind(null, ctx);
  await next();
};

response.js是返回实体的格式了,现在有成功失败两种

const response = {
  code: 1,
  data: [],
  message: '操作成功'
};

/**
 * response
 * @param ctx
 * @param data 数据
 * @param code 错误码 || [错误码, 错误描述]
 * @param message 错误描述
 */
exports.response = (ctx, data, code, message) => {
  if (typeof code == 'object') {
    message = code[1];
    code = code[0];
  }
  ctx.body = {
    code,
    data,
    message
  };
};

/**
 * response 成功
 * @param ctx
 * @param data 数据
 * @param code 错误码 || [错误码, 错误描述]
 * @param message 错误描述
 */
exports.success = (ctx, data, code = 1, message = '操作成功') => {
  if (typeof code === 'string') {
    message = code;
  }
  this.response(ctx, data, code, message);
};

/**
 * response 异常
 * @param ctx
 * @param code 错误码 || [错误码, 错误描述]
 * @param message 错误描述
 */
exports.error = (ctx, code = 0, message = '操作失败') => {
  if (typeof code === 'object') {
    message = code[1];
    code = code[0];
  }
  this.response(ctx, response.data, code, message);
};

这样以后自己魔改也方便。

开发一个post请求接口

因为get请求创建项目里直接就有了,所以就不多说了。
接下来开发一个post接口,同时测试下返回体格式。post请求需要koa-bodyparser依赖的支持来获取请求参数,新建项目的时候默认都安装了,在app.js里可以看到。
routes/users.js

const mysql = require('../mysql');
const router = require('koa-router')();
const paramCheck = require('../tool/paramCheck');

router.prefix('/users');

const code = {
  UNKNOWN_ERROR: [1, 'Sorry, you seem to have encountered some unknown errors.']
};

router.get('/', (ctx, next) => {
  ctx.body = 'this is a users response!';
});

router.get('/bar', (ctx, next) => {
  ctx.body = 'this is a users/bar response';
});

// router.post('/login', async (ctx, next) => {
//   const requestParam = ['name', 'password'];
//   const user = ctx.request.body;
//   if (paramCheck.check(user, requestParam) !== true) {
//     ctx.error([1, paramCheck.check(user, requestParam)]);
//   } else {
//     ctx.success({
//       type: 1
//     });
//   }
//   // mysql.query(
//   //   'SELECT * FROM `koa2_server`.`user` LIMIT 0,1000',
//   //   (error, results, fields) => {
//   //     if (error) throw error;
//   //     // console.log('The solution is: ', results);
//   //   }
//   // );
//   console.log(ctx.request.body);
// });

router.post('/test', async (ctx, next) => {
  const user = ctx.request.body;
  ctx.success({
    list: '成功'
  });
  console.log(ctx.request.body);
});

module.exports = router;


postman跑起来,获取到了请求参数,简单的post接口完成
在这里插入图片描述
获取的请求参数

上一篇:node从入门到放弃系列之(3)服务项目重构及跳车koa
下一篇:node从入门到放弃系列之(5)登录接口demo

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值