专栏首页信息安全小学生Egg.js 笔记三 搭建 Restful 服务

Egg.js 笔记三 搭建 Restful 服务

初始化工程

$ egg-init

选择 Simple

$ npm i
$ npm run dev

浏览器访问 http://localhost:7001 此时服务已经建立

设计API

egg Rest API 接口规范

| Method | URL | File path | Controller name | | - | - | - | - | | GET | /api/{objects}[?per_page={per_page}&page] | app/controller/{objects}.js | index() | | GET | /api/{objects}/:id | app/controller/{objects}.js | show() | | POST | /api/{objects} | app/controller/{objects}.js | create() | | PUT | /api/{objects}/:id | app/controller/{objects}.js | update() | | DELETE | /api/{objects}/:id[s] | app/controller/{objects}.js | destroy() |

数据格式

{
"meta":{"total":3},
"data":[
{"_id":"58d8a899f5f2486f1f6d4236","uid":1,"name":"admin","pass":"123","status":1,"time":"1325472736"},
{"_id":"58db7828a14b14815447cf33","name":"sdf","pass":"123","status":1,"time":"1325472736","uid":3,"__v":0},
{"_id":"58db7d3bcee4d48df6f5bdfd","name":"sdddf","pass":"123","status":1,"time":"1325472736","uid":4,"__v":0}
]
}

api/users/1 GET Single Data

{
"meta":{"total":1},
"data":[
{"_id":"58d8a899f5f2486f1f6d4236","uid":1,"name":"admin","pass":"123","status":1,"time":"1325472736"}
]
}

api/users/2 PUT Update data with uid

{"name":"admin123","pass":"123","status":1,"time":"1325472736"}

api/users POST insert data

{"name":"admin123","pass":"123","status":1,"time":"1325472736"}

数据模型

此处先定义用户 User 对象,在 app 目录下 新建 model 文件夹,然后创建 users.js 文件。

每一个 User 对象需要包含 用户名、密码、邮箱、公司 等信息, users.js 文件内容如下:

// app/model/user.js

module.exports = app => {
  const mongoose = app.mongoose;
  const UserSchema = new mongoose.Schema({
    email : {type: String, required: true},
    password: {type: String, required: true},
    realname: { type:String },
    sex: { type: String },
    corp: { type: String },
    position: { type: String },
    mobile: { type: String },
    region: { type: String },
    qq: { type: String },
    wechat: { type: String },
    bcardurl: { type: String },
    bcardstate: { type: String }
  });

  UserSchema.methods.encryptPassword = function(password) {
    return bcrypt.hashSync(password, bcrypt.genSaltSync(5), null);
  };

  UserSchema.methods.validPassword = function(password) {
    return bcrypt.compareSync(password, this.password);
  };

  return mongoose.model('User', UserSchema);
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Egg.js 笔记二 目录结构和内置对象

    Application 是全局应用对象,在一个应用中,只会实例化一个,它继承自 Koa.Application,在它上面我们可以挂载一些全局的方法和对象。我们可...

    tonglei0429
  • Mysql主主同步失败后的恢复

    tonglei0429
  • 推荐一种适合程序员的字体(附下载地址及各平台安装方法)

    Adobe Source Code Pro 主页: http://adobe-fonts.github.io/source-code-pro/

    tonglei0429
  • Java-文件操作|read|write

    大数据工程师-公子
  • scaleZ()

    Html5知典
  • JMeter接口压测——ServerAgent监控服务端性能指标

    ServerAgent作为一个服务端性能监控插件,结合JMeter自身插件PerfMon可以实现JMeter压测的图形化实时监控,具有良好的实用性。下面讲解一个...

    互联网金融打杂
  • 快速学习-以太币单位

    cwl_java
  • 英伟达与博世联手,向汽车厂商销售自动驾驶系统

    △ 英伟达CEO黄仁勋 李林 编译整理 量子位·QbitAI 出品 英伟达今天在博世的连接世界物联网大会上,宣布双方达成合作,将联手把英伟达的DRIVE PX ...

    量子位
  • 【玩转腾讯云】 让开发变得简单

    今年年初接触了云开发,这东西真香,减少了我们开发的繁琐和开发成本。它集成了云函数、云数据库、云存储等功能,使我们不必担心服务器运维、基础架构,只关心我们的业务逻...

    XaDon
  • flask框架(二)配套代码

    小闫同学啊

扫码关注云+社区

领取腾讯云代金券