Function request

API 请求函数,继承自 ky

  • Fetch the given url.

    Type Parameters

    • T

    Parameters

    • url: Input

      Request object, URL object, or URL string.

    • Optionaloptions: Options

    Returns ResponsePromise<T>

    A promise with Body method added.

    import ky from 'ky';

    const json = await ky('https://example.com', {json: {foo: true}}).json();

    console.log(json);
    //=> `{data: '🦄'}`

Properties

create: (defaultOptions?: Options) => KyInstance

Create a new Ky instance with complete new defaults.

Type declaration

    • (defaultOptions?: Options): KyInstance
    • Parameters

      • OptionaldefaultOptions: Options

      Returns KyInstance

      A new Ky instance.

delete: <T>(url: Input, options?: Options) => ResponsePromise<T>

Fetch the given url using the option {method: 'delete'}.

Type declaration

    • <T>(url: Input, options?: Options): ResponsePromise<T>
    • Type Parameters

      • T

      Parameters

      • url: Input

        Request object, URL object, or URL string.

      • Optionaloptions: Options

      Returns ResponsePromise<T>

      A promise with Body methods added.

extend: (
    defaultOptions: Options | (parentOptions: Options) => Options,
) => KyInstance

Create a new Ky instance with some defaults overridden with your own.

In contrast to ky.create(), ky.extend() inherits defaults from its parent.

You can also refer to parent defaults by providing a function to .extend().

Type declaration

    • (defaultOptions: Options | (parentOptions: Options) => Options): KyInstance
    • Parameters

      • defaultOptions: Options | (parentOptions: Options) => Options

      Returns KyInstance

      A new Ky instance.

import ky from 'ky';

const api = ky.create({prefixUrl: 'https://example.com/api'});

const usersApi = api.extend((options) => ({prefixUrl: `${options.prefixUrl}/users`}));

const response = await usersApi.get('123');
//=> 'https://example.com/api/users/123'

const response = await api.get('version');
//=> 'https://example.com/api/version'
get: <T>(url: Input, options?: Options) => ResponsePromise<T>

Fetch the given url using the option {method: 'get'}.

Type declaration

    • <T>(url: Input, options?: Options): ResponsePromise<T>
    • Type Parameters

      • T

      Parameters

      • url: Input

        Request object, URL object, or URL string.

      • Optionaloptions: Options

      Returns ResponsePromise<T>

      A promise with Body methods added.

head: (url: Input, options?: Options) => ResponsePromise

Fetch the given url using the option {method: 'head'}.

Type declaration

    • (url: Input, options?: Options): ResponsePromise
    • Parameters

      • url: Input

        Request object, URL object, or URL string.

      • Optionaloptions: Options

      Returns ResponsePromise

      A promise with Body methods added.

patch: <T>(url: Input, options?: Options) => ResponsePromise<T>

Fetch the given url using the option {method: 'patch'}.

Type declaration

    • <T>(url: Input, options?: Options): ResponsePromise<T>
    • Type Parameters

      • T

      Parameters

      • url: Input

        Request object, URL object, or URL string.

      • Optionaloptions: Options

      Returns ResponsePromise<T>

      A promise with Body methods added.

post: <T>(url: Input, options?: Options) => ResponsePromise<T>

Fetch the given url using the option {method: 'post'}.

Type declaration

    • <T>(url: Input, options?: Options): ResponsePromise<T>
    • Type Parameters

      • T

      Parameters

      • url: Input

        Request object, URL object, or URL string.

      • Optionaloptions: Options

      Returns ResponsePromise<T>

      A promise with Body methods added.

put: <T>(url: Input, options?: Options) => ResponsePromise<T>

Fetch the given url using the option {method: 'put'}.

Type declaration

    • <T>(url: Input, options?: Options): ResponsePromise<T>
    • Type Parameters

      • T

      Parameters

      • url: Input

        Request object, URL object, or URL string.

      • Optionaloptions: Options

      Returns ResponsePromise<T>

      A promise with Body methods added.

stop: typeof stop

A Symbol that can be returned by a beforeRetry hook to stop the retry. This will also short circuit the remaining beforeRetry hooks.

Note: Returning this symbol makes Ky abort and return with an undefined response. Be sure to check for a response before accessing any properties on it or use optional chaining. It is also incompatible with body methods, such as .json() or .text(), because there is no response to parse. In general, we recommend throwing an error instead of returning this symbol, as that will cause Ky to abort and then throw, which avoids these limitations.

A valid use-case for ky.stop is to prevent retries when making requests for side effects, where the returned data is not important. For example, logging client activity to the server.

import ky from 'ky';

const options = {
hooks: {
beforeRetry: [
async ({request, options, error, retryCount}) => {
const shouldStopRetry = await ky('https://example.com/api');
if (shouldStopRetry) {
return ky.stop;
}
}
]
}
};

// Note that response will be `undefined` in case `ky.stop` is returned.
const response = await ky.post('https://example.com', options);

// Using `.text()` or other body methods is not supported.
const text = await ky('https://example.com', options).text();