koa

本文介绍了REST的概念,包括其代表的状态转移、六个核心限制和统一接口的四个限制。接着阐述了RESTful API的设计原则,并给出了现实中的例子。然后转向Koa框架,讲述了如何搭建Koa程序,使用中间件、洋葱模型、路由和Koa-router。最后讨论了NoSQL数据库,特别是MongoDB,以及用户认证与授权,包括JWT的使用。
摘要由CSDN通过智能技术生成

restful API

为什么叫REST

  1. Representational State Transfer
  2. Representational: 数据的表现形式 (JSON, XML …)
  3. State: 当前状态或者数据
  4. Transfer: 数据传输

6个限制

  1. 客户-服务(Client-Server)

    • 关注点分离
    • 服务端专注数据存储, 提升了简单性
    • 客户端专注用户界面, 提升了可移植性
    1. 无状态(Stateless)
    • 所有用户会话信息都保存在客户端
    • 每次请求必须包括所有信息, 不能依赖上下文信息
    • 服务端不保存会话信息, 提升了简单性, 可靠性, 可见性
    1. 缓存(Cache)
    • 所有服务端响应都要被标为可缓存或不可缓存
    • 减少前后端交互, 提升了性能
    1. 统一接口(Uniform Interface)
    • 接口设计尽可能统一通用, 提升了简单性, 可见性
    • 接口与实现解耦, 使前后端可以独立开发迭代
    1. 分层系统(Layered System)
    • 每次只知道相邻的一层, 后面隐藏的就不知道了
    • 客户端不知道是和代理还是和真正的服务器通信
    1. 按需代码(Code-On-Demand可选)
    • 客户端可以下载运行服务端传来的代码(比如JS)
    • 通过减少一些功能, 简化了客户端

统一接口的限制

  1. 资源的标识
    • 资源是任何可以命名的事物,比如用户, 评论等
    • 每个资源可以通过URI被唯一的标识
      a. https://api.github.com/users
      b. https://api.github.com/users/lewi617
  2. 通过表述来操作资源
    • 表述就是Representational, 比如 JSON, XML …
    • 客户端不能直接操作(比如SQL)服务端资源
    • 客户端应该通过表述 (比如JSON)来操作资源
  3. 自描述消息
    • 每个消息(请求或响应)必须提供足够的信息让接受者理解
    • 媒体(application/json application/xml)
    • HTTP方法: GET(查), POST(增), DELETE(删)
    • 是否缓存(Cache-Control)
  4. 超媒体作为应用状态引擎
    • 超媒体: 带文字的连接
    • 应用状态: 一个网页
    • 引擎: 驱动, 跳转
    • 合起来: 点击链接跳转到另外一个网页

什么是restful API

符合REST架构风格的API

  1. 具体:

    1. 基本的URI: 如: https://api.github.com/users
    2. 标准的HTTP方法, 如 GET(查), POST(增), DELETE(删), PUT, PATCH
    3. 传输的数据媒体类型, 如: JSON, XML
  2. 现实举例:

    1. GET/users # 获取user列表
    2. GET/users/12 # 查看某个具体的user
    3. POST/users # 新建一个user
    4. PUT/users/12 # 更新user12
    5. DELETE/users/12 # 删除user12
  3. 请求设计规范

    1. URI使用名词,尽量用复数,如/users
    2. URI使用嵌套表示关联关系, 如: users/12/repos/5
    3. 使用正确的http方法, 如 GET(查), POST(增), DELETE(删), PUT, PATCH
    4. 不符合CRUD的情况: POST/action/子资源
  4. 响应设计规范

    1. 查询
    2. 分页
    3. 字段过滤
    4. 状态码
    5. 错误处理
  5. 安全
    HTTPS 鉴权 限流

  6. 开发者友好

         文档   超媒体
    

koa

一些命令行:

cd /d/code 切换到文件夹

mkdir xxx 创建文件夹

code xxx vsCode打开文件夹

搭建koa程序

npm init: 生成package.json文件, 管理依赖

npm i koa --save 安装koa

编写index.js --> 执行node index.js启动程序

const Koa = require('koa')  // 1.引入koa

const app = new Koa() //1.创建一个应用程序

app.use(ctx => {  //2.中间件
  ctx.body = 'hello world 111'
})

app.listen(3000, () => console.log('程序已启动'))  // 1.启动应用程序 监听端口

npm i nodemon --save-dev // 修改文件后程序自动启动 只在开发阶段使用

由于nodemon 不是全局安装的所以使用时需要修改脚本如下:

"scripts": {

    "start": "nodemon index.js"

  },
  
 执行npm start 启动程序

编写koa中间件及洋葱模型

中间件:

const Koa = require('koa')

const app = new Koa()

app.use(async (ctx, next) =&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值