Ky 适用于各种需要进行 HTTP 请求的场景,特别是在需要简洁、现代化和高效的网络通信解决方案时:
Ky 的核心设计理念是提供一个简洁且现代化的 HTTP 客户端,使得 HTTP 请求变得简单、高效和灵活。其核心组件包括:
可以通过 npm 或 yarn 安装 Ky:
npm install ky
yarn add ky
以下是一些基本的 Ky 示例,展示了如何使用 Ky 进行 HTTP 请求操作:
const ky = require('ky');
// 或者使用 ES6 模块
import ky from 'ky';
const response = await ky.get('https://jsonplaceholder.typicode.com/posts/1').json();
console.log(response); // 获取并解析 JSON 响应
const response = await ky.post('https://jsonplaceholder.typicode.com/posts', {
json: {
title: 'foo',
body: 'bar',
userId: 1
}
}).json();
console.log(response); // 解析 JSON 响应
try {
const response = await ky.get('https://jsonplaceholder.typicode.com/posts/1', { timeout: 5000 }).json();
console.log(response);
} catch (error) {
console.log('请求超时或失败', error);
}
const response = await ky.get('https://jsonplaceholder.typicode.com/posts/1', { retry: 2 }).json();
console.log(response); // 自动重试最多 2 次
const loggingMiddleware = {
async beforeRequest(request) {
console.log('发起请求:', request);
},
async afterResponse(request, options, response) {
console.log('收到响应:', response);
return response;
}
};
const kyInstance = ky.create({ hooks: loggingMiddleware });
const response = await kyInstance.get('https://jsonplaceholder.typicode.com/posts/1').json();
console.log(response);
const response = await ky.get('https://jsonplaceholder.typicode.com/posts/1');
const reader = response.body.getReader();
while (true) {
const { done, value } = await reader.read();
if (done) break;
console.log(new TextDecoder().decode(value));
}