Deno - Как получить данные из удаленного API или URL? - PullRequest
3 голосов
/ 29 мая 2020

Мне интересно, как я могу получить данные с других серверов и API с помощью программы? Все в документации учит меня создавать http-серверы и читать файлы из локального источника. Но я не могу найти ничего полезного в чтении чего-либо в сети.

Как можно прочитать JSON данные из Stripe API? Или, если я хочу прочитать файл HTML с текстом внутри?

Спасибо за ваше время!

Ответы [ 3 ]

3 голосов
/ 29 мая 2020

Я просто даю вам пример запроса GET для получения репозиториев Github.

Вы можете изменить URL-адрес и конфигурацию запроса в соответствии с вашими потребностями.

В коде, приведенном ниже , Я вызываю другой API Github. Это можно сделать с помощью метода fetch().

fetch() метод сначала принимает URL-адрес в качестве первого параметра, а следующий параметр - RequestInit, который принимает запрос тип метода, заголовки , body , et c и в конце возвращение JSON ответа на этот вызов API.

const githubResponse = async (): Promise<any> => {
    const response = await fetch("https://api.github.com/search/repositories?q=android", {
        method: "GET",
        headers: {
            "Content-Type": "application/json",
        },
    });
    return response.json(); // For JSON Response
    //   return response.text(); // For HTML or Text Response
}

console.log(await githubResponse());

Я написал приведенный выше код в файле ts с именем Testing.ts . Итак, вы можете запустить приведенный выше код с помощью команды, приведенной ниже:

deno run --allow-net Testing.ts

Далее я даю вам образец POST код запроса:

const githubResponse = async (): Promise<any> => {
    const body: URLSearchParams = new URLSearchParams({
        q: "AvijitKarmakar",
    });

    const response = await fetch("https://api.github.com/search/repositories", {
        method: "POST",
        headers: {
            "Content-Type": "application/json",
        },
        body: body
    });
    return response.json();
    //   return response.text(); // For HTML or Text Response
}

console.log(await githubResponse());

Вы можете видеть, что я создал объект body и передал его в RequestInit через параметр body, а также изменил тип метода запроса на POST .

3 голосов
/ 29 мая 2020

Вам нужно будет выполнить HTTP-запрос, для этого в Deno вы используете fetch, тот же веб-API, который используют браузеры.

Чтобы прочитать JSON ответ:

const res = await fetch('https://api.stripe.com');
const data = await res.json();

Если вы хотите HTML:

const res = await fetch('https://example.com');
const html = await res.text();
// Now you can use some HTML parsing lib

fetch требуется флаг --allow-net.

2 голосов
/ 29 мая 2020

Deno стремится быть как можно ближе к существующему API браузера.

Это означает, что вы можете использовать fetch. Пример:

// fetch-kitten.ts
fetch("https://placekitten.com/200/300").then(async (d) =>
  Deno.writeFile("kitten.jpg", new Uint8Array(await d.arrayBuffer()))
);
CLI:
deno run --allow-net --allow-write fetch-kitten.ts

Ссылка

...