一、RESTful API 是什么?

  • 用自己的话来表达就是,遵守一定的规则来给接口url取名字的方法论
  • 所有的东西都是资源,用户是资源、支付是资源、课程是资源……
  • 每个资源有4种不同的动作:增、删、改、查
  • 以一个课程来举例

    增 post 
    增加一个: /courses  创建的内容JSON
    
    删 delete
    删除一个:/courses/:id
    
    改 patch
    修改一个:/courses/:id  改的内容JSON
    
    查 get 
    查所有:/courses
    查一个:/courses/:id
    注意查又分两种情况返回:html,json,由前端发的请求Accept来确定具体返回哪种类型
    直接从浏览器输入url,会自动以text/html的类型返回
    从请求中获取,需要设置请求头accept类型
    

二、前后端JSON如何设计?

  • 前端给后端传上面?后端给前端传上面?
  • 举例登录功能

    前端给后端传:
    {
    手机号,
    密码
    }
    
    后端成功,返回前端:
    {
    状态码200,
    data:{用户的信息数据}
    }
    
    后端失败、返回前端:
    {
    状态码4XX,
    errors:[中文原因1、中文原因2……]
    }
    
  • 举例展示多个资源

    前端根据接口查询
    
    
    后端成功,返回前端:
    {
    状态码200,
    data:[{渲染的数据}、{渲染的数据}……],
    pager:{每页几个、当前页、总共多少页、总共多少个数据}
    }
    
    后端失败、返回前端:
    {
    状态码4XX,
    errors:[中文原因1、中文原因2……]
    }
    

三、前端权限如何设计?

  • 什么是权限?你能做什么?你不能做什么?
  • 角色和权限需要区分开,权限用二进制数组来对应,然后一一映射
  • 前端界面的权限思路:
    • 显示不同的菜单(前端可以直接固定写不同角色能看什么菜单)
    • 分div,封装全局API
    • 后端返回权限状态码

注意:写一个全局的can(userRole,basic)返回一个Boolean。所有的复杂的判断在can里面实现,那么html的展示逻辑就很简单了。