Home

Awesome

ky translate-svg

「 Ky是一个小巧典雅的基于浏览器Fetch API的HTTP客户端 」

中文 | english


校对 🀄

<!-- doc-templite START generated --> <!-- repo = 'sindresorhus/ky' --> <!-- time = '2018 9.7' --> <!-- commit = '02c3a7e0ef2781db48be126e7ac467f062df8858' -->
翻译的原文与日期最新更新更多
commit⏰ 2018 9.7last中文翻译
<!-- doc-templite END generated -->

贡献

欢迎 👏 勘误/校对/更新贡献 😊 具体贡献请看

生活

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客户端

Build Status codecov

ky的目标是modern browsers. 对于较旧的浏览器,您需要导入并使用fetch polyfill. 对于Node.js,使用Got就好了.

1 KB (minified & gzipped)* ,一个文件,没有依赖项.

fetch更少要求

安装

$ 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])

这个inputoptionsfetch一样, 但有些例外:

返回一个Response 对象,其具有Body 方法为了方便而添加. 例如,你可以直接对Responseky.json(),而不用等待. 不像window.FetchBody方法,如果响应状态不在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

用以下方法之一导致的网络错误或状态代码之一, 会重试失败的请求.

方法: 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.

相关的

许可证

MIT © Sindre Sorhus