美文网首页
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 | 设计用户注册接口

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