Awesome
ky
「 Ky是一个小巧典雅的基于浏览器Fetch API的HTTP客户端 」
校对 🀄
<!-- doc-templite START generated --> <!-- repo = 'sindresorhus/ky' --> <!-- time = '2018 9.7' --> <!-- commit = '02c3a7e0ef2781db48be126e7ac467f062df8858' -->翻译的原文 | 与日期 | 最新更新 | 更多 |
---|---|---|---|
commit | ⏰ 2018 9.7 | 中文翻译 |
贡献
欢迎 👏 勘误/校对/更新贡献 😊 具体贡献请看
生活
help me live , live need money 💰
<div align="center"> <br> <div> <img width="600" height="600" src="media/logo.svg" alt="ky"> </div> <br> <br> <br> </div>
Ky是一个小巧典雅的基于浏览器Fetch API的HTTP客户端
ky的目标是modern browsers. 对于较旧的浏览器,您需要导入并使用fetch
polyfill. 对于Node.js,使用Got就好了.
1 KB (minified & gzipped)* ,一个文件,没有依赖项.
比fetch
更少要求
- 简单API
- 方法快捷方式 (
ky.post()
) - 将非200状态码作为错误处理
- 请求失败,重试
- 可JSON化
- 超时支持
- 具有自定义默认值的实例
安装
$ npm install ky
<a href="https://www.patreon.com/sindresorhus">
<img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" width="160">
</a>
用法
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: '🦄'}`
})();
API
KY (input,[options])
这个input
和options
和fetch
一样, 但有些例外:
- 默认情况下,这个
credentials
选项是same-origin
,这也是规范中的默认值,但并非所有浏览器都已经规范化了. - 添加更多选项. 见下文.
返回一个Response
对象,其具有Body
方法为了方便而添加. 例如,你可以直接对Response
用ky.json()
,而不用等待. 不像window.Fetch
的Body
方法,如果响应状态不在200...299
范围内,就扔出HTTPError
错误.
options
类型: Object
json
类型: Object
发送JSON的快捷方式. 用这个代替body
选项. 接受一个plain的对象,将被JSON.stringify()
处理,且为您设置正确的header
.
ky.get(input, [options])
ky.post(input, [options])
ky.put(input, [options])
ky.patch(input, [options])
ky.head(input, [options])
ky.delete(input, [options])
options.method
方法集合名称,发出请求.
retry
- 类型:
number
- 默认:
2
- 描述: 重试
用以下方法之一导致的网络错误或状态代码之一, 会重试失败的请求.
方法: GET
PUT
HEAD
DELETE
OPTIONS
TRACE
<br>状态码: 408
413
429
500
502
503
504
timeout
类型: number
<br>
默认: 10000
以毫秒为单位,获得响应的超时时间.
ky.extend(defaultOptions)
创建新的ky
实例,自己重写部分选项.
defaultOptions
类型: Object
ky.HTTPError
暴露给instanceof
做检查. 错误会有Response
对象的response
属性.
ky.TimeoutError
请求超时时,引发的错误.
提示
取消
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