主题
拦截器与中间件
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,可实现拦截器和中间件模式,提高代码复用性和可维护性。