美文网首页
06 | 设计用户注册接口

06 | 设计用户注册接口

作者: cemcoe | 来源:发表于2020-10-11 07:46 被阅读0次

这里是在简书仿简书的第六篇,早睡早起身体好

用户名密码

我想要这样的接口

POST https://jian.cemcoe.com/jianshu_api/users

请求示例:

{
    "name": "小可爱",
    "password": "cemcoe"
}

注册成功请求示例:

{
    "status": 200,
    "user": {
        "gender": "male",
        "bio": "该用户没有给自己编写简介",
        "avatar": "/uploads/default_avatar.png",
        "following": [],
        "_id": "5f7c5127354939e9ce5465a2",
        "name": "小可爱",
        "password": "cemcoe",
        "createdAt": "2020-10-06T11:12:39.664Z",
        "updatedAt": "2020-10-06T11:12:39.664Z",
        "__v": 0
    }
}

注册失败示例

{
    "status": 409,
    "message": "用户名已存在,换一个名字"
}

目前来讲,失败的原因只有用户名重复。


下面来实现一下,接口的开发流程是:


Slide1.jpg

用户的model,我们上一章已经搞过了,现在的重点是Controlls。基本逻辑前端ajax传JSON格式的数据来,发起HTTP POST请求,后端从POST请求中解析出用户名和密码,然后拿着用户名去数据库检查是否已经有该用户名,如果没有就将该用户信息存到数据库,并将用户信息返回。如果数据库中已有该用户名,则返回409状态码提醒用户换个用户名。

Slide2.jpg

核心是获取 POST 请求,借用 koa-body 来解析 post 请求,具体的配置参考官方文档。

配置好以后会将 POST 请求数据放到 ctx.request.body 中,比如用户名就可以这样获取 const { name } = ctx.request.body,同时对传来的数据进行了基础校验,借用的是 koa-parameter

// controllers/users.js
// 用户注册
  async create(ctx) {
    // 校验参数koa-parameter提供的功能
    ctx.verifyParams({
      name: { type: 'string', required: true },
      password: { type: 'string', required: true },
    })

    const { name } = ctx.request.body
    // koa-body 提供的 获取post请求的body功能
    const repeatedUser = await User.findOne({ name })
    if (repeatedUser) {
      // ctx.throw(409, '用户名已存在')
      // 登录成功返回token
      ctx.body = {
        status: 409,
        message: '用户名已存在,换一个名字',
      }
      return
    }
    const user = await new User(ctx.request.body).save()

    ctx.body = {
      status: 200,
      user,
    }
  }

可以使用postman进行测试。

至此,第一个接口也就完成了。

相关文章

  • 06 | 设计用户注册接口

    这里是在简书仿简书的第六篇,早睡早起身体好 用户名密码 我想要这样的接口 POST https://jian.ce...

  • Django JWT开发接口

    1.创建的后端的用户注册register接口 2.创建用户登录接口 login 3.查询用户信息info 1.设计...

  • 一篇文章读懂布隆过滤器

    你接到一个新的开发需求,需要你为用户注册服务设计一个用户名检查的API接口, 这个接口会根据用户输入的用户名与系统...

  • 2018-09-10

    #接口规范 ##1. 账号管理 - ###用户注册 **说明**:新用户注册 **地址**:[http://[...

  • 用户登录、登出、注册功能的实现

    ## 用户注册功能 [TOC] ### 一、设计接口思路 -分析业务逻辑,明确在这个业务中需要涉及到几个相关子业务...

  • 使用Flask开发简单接口(2)--POST请求接口

    今天我们继续学习如何使用Flask开发POST接口:用户注册接口和用户登录接口。 request接收参数 当我们在...

  • Django项目用户注册功能(二)

    一.用户名注册校验功能(后端部分) 1接口设计 1.1说明 1.2 参数说明 1.3 返回数据 返回结果(json...

  • 秒杀第九节:用户模型管理-用户注册功能实现

    实现用户注册接口controller层实现: 在UserService定义注册方法 在UserServiceImp...

  • API

    对外API系统接口用户接口: 用户登录类用户登录忘记密码 用户注册类请求获取验证码校验验证码设置密码 首页 首页-...

  • 实现注册页面&验证码的认证

    注册//1.给注册按钮添加点击事件//2.获取到用户注册的信息//3.对用户输入的信息做验证//4.调用注册接口 ...

网友评论

      本文标题:06 | 设计用户注册接口

      本文链接:https://www.haomeiwen.com/subject/vlrryktx.html