「 Ky是一个小巧典雅的基于浏览器Fetch API的HTTP客户端 」
| 翻译的原文 | 与日期 | 最新更新 | 更多 |
|---|---|---|---|
| commit | ⏰ 2018 9.7 | 中文翻译 |
欢迎 👏 勘误/校对/更新贡献 😊 具体贡献请看
help me live , live need money 💰
Ky是一个小巧典雅的基于浏览器Fetch API的HTTP客户端
ky的目标是modern browsers. 对于较旧的浏览器,您需要导入并使用fetch polyfill. 对于Node.js,使用Got就好了.
1 KB (minified & gzipped)* ,一个文件,没有依赖项.
- 简单API
- 方法快捷方式 (
ky.post()) - 将非200状态码作为错误处理
- 请求失败,重试
- 可JSON化
- 超时支持
- 具有自定义默认值的实例
$ npm install ky
import ky from 'ky';
(async () => {
const json = await ky.post('https://some-api.com', {json: {foo: true}}).json();
console.log(json);
//=> `{data: '🦄'}`
})();用fetch这将是大量的:
(async () => {
class HTTPError extends Error {}
const response = await fetch('https://sindresorhus.com', {
method: 'POST',
body: JSON.stringify({foo: true}),
headers: {
'content-type': 'application/json'
}
});
if (!response.ok) {
throw new HTTPError(`Fetch error:`, response.statusText);
}
const json = await response.json();
console.log(json);
//=> `{data: '🦄'}`
})();这个input和options和fetch一样, 但有些例外:
- 默认情况下,这个
credentials选项是same-origin,这也是规范中的默认值,但并非所有浏览器都已经规范化了. - 添加更多选项. 见下文.
返回一个Response 对象,其具有Body 方法为了方便而添加. 例如,你可以直接对Response用ky.json(),而不用等待. 不像window.Fetch的Body方法,如果响应状态不在200...299范围内,就扔出HTTPError错误.
类型: Object
类型: Object
发送JSON的快捷方式. 用这个代替body选项. 接受一个plain的对象,将被JSON.stringify()处理,且为您设置正确的header.
options.method方法集合名称,发出请求.
- 类型:
number - 默认:
2 - 描述: 重试
用以下方法之一导致的网络错误或状态代码之一, 会重试失败的请求.
方法: GET PUT HEAD DELETE OPTIONS TRACE
状态码: 408 413 429 500 502 503 504
类型: number
默认: 10000
以毫秒为单位,获得响应的超时时间.
创建新的ky实例,自己重写部分选项.
类型: Object
暴露给instanceof做检查. 错误会有Response 对象的response属性.
请求超时时,引发的错误.
Fetch (因此Ky) 具有内置的请求取消的支持,通过AbortController API.查阅更多.
例子:
import ky from 'ky';
const controller = new AbortController();
const {signal} = controller;
setTimeout(() => controller.abort(), 5000);
(async () => {
try {
console.log(await ky(url, {signal}).text());
} catch (error) {
if (error.name === 'AbortError') {
console.log('Fetch aborted');
} else {
console.error('Fetch error:', error);
}
}
})();它与r2有什么不同?
看到我的答案#10.
最新版本的Chrome,Firefox和Safari.
- got-对Node.js的HTTP请求
MIT © Sindre Sorhus