教程 ky tutorial

拦截器与中间件

Ky 提供 hooks 机制,可以在请求发送前或响应返回后执行自定义逻辑,实现类似拦截器和中间件的功能。

请求前拦截

使用 beforeRequest hook 可以在请求发送前修改请求或执行额外操作:

javascript
import ky from 'ky';

const api = ky.create({
  hooks: {
    beforeRequest: [
      request => {
        console.log('即将发送请求:', request.url);
        // 可修改请求头
        request.headers.set('X-Custom-Header', 'value');
      }
    ]
  }
});

api.get('https://api.example.com/data').json();

`

响应后拦截

使用 afterResponse hook 可以在响应返回后处理逻辑:

javascript
const api = ky.create({
  hooks: {
    afterResponse: [
      (request, options, response) => {
        console.log('收到响应:', response.status);
        if (!response.ok) {
          console.warn(`请求 ${request.url} 返回错误状态码 ${response.status}`);
        }
      }
    ]
  }
});

api.get('https://api.example.com/data').json();

异常处理拦截

在 afterResponse 中也可以捕获和处理错误:

javascript
const api = ky.create({
  hooks: {
    afterResponse: [
      (request, options, response) => {
        if (!response.ok) {
          throw new Error(`请求失败,状态码 ${response.status}`);
        }
      }
    ]
  }
});

小结

  • Ky 的 hooks 可以在请求前或响应后执行自定义逻辑。
  • beforeRequest 用于修改请求或添加日志。
  • afterResponse 用于统一处理响应、日志记录或错误处理。
  • 结合 hooks,可实现拦截器和中间件模式,提高代码复用性和可维护性。