JavaScript · API · Начальный
Заголовки и эхо-эндпоинт
Добавляйте кастомные HTTP-заголовки к запросам и используйте эхо-эндпоинт для проверки.
Краткое введение в тему и пояснения перед упражнениями (упражнения ниже):
Использование эхо-эндпоинта
#Справочник заголовков и эхо
#Упражнения:
Отправить кастомный заголовок
#Отправьте GET-запрос к `/api/echo/` с кастомным заголовком `X-My-Name: YourName`. Выведите значение этого заголовка из ответа эхо.
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// GET /api/echo/ с заголовком X-My-Name
// вывести отражённое значение заголовка
}
main();
Решение
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const response = await fetch(`${BASE_URL}/api/echo/`, {
headers: { 'X-My-Name': 'Alice' },
});
const data = await response.json();
console.log(data.headers['X-My-Name']);
}
main();
Отправить несколько заголовков
#Отправьте GET `/api/echo/` с тремя заголовками: `X-App: my-app`, `X-Version: 1.0` и `X-Request-ID: 42`. Выведите полный объект `headers` из ответа.
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// отправить 3 кастомных заголовка, вывести data.headers
}
main();
Решение
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const response = await fetch(`${BASE_URL}/api/echo/`, {
headers: {
'X-App': 'my-app',
'X-Version': '1.0',
'X-Request-ID': '42',
},
});
const data = await response.json();
console.log(data.headers);
}
main();
Проверить метод и параметры запроса через эхо
#Отправьте GET `/api/echo/?color=blue&size=large`. Выведите метод и объект `query_params` из ответа.
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// GET /api/echo/ с двумя параметрами запроса
// вывести method и query_params
}
main();
Решение
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const params = new URLSearchParams({ color: 'blue', size: 'large' });
const response = await fetch(`${BASE_URL}/api/echo/?${params}`);
const data = await response.json();
console.log(data.method);
console.log(data.query_params);
}
main();
POST с заголовком Content-Type
#Отправьте POST к `/api/echo/` с JSON-телом `{name: "test"}` и заголовком `Content-Type: application/json`. Выведите отражённый заголовок `Content-Type` и поле `body`.
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
// POST /api/echo/ с JSON-телом и заголовком Content-Type
// вывести content-type заголовок и body из ответа
}
main();
Решение
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const response = await fetch(`${BASE_URL}/api/echo/`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'test' }),
});
const data = await response.json();
console.log(data.headers['content-type'] ?? data.headers['Content-Type']);
console.log(data.body);
}
main();
Использовать класс Headers
#Создайте объект `Headers` с помощью `.set()`, добавьте минимум два кастомных заголовка, затем передайте его в GET-запрос к `/api/echo/`. Выведите отражённые заголовки.
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const headers = new Headers();
// добавить заголовки через .set()
// fetch и вывести отражённые заголовки
}
main();
Решение
const BASE_URL = 'https://apilearn.tukas.dev';
async function main() {
const headers = new Headers();
headers.set('X-Client', 'js-api-course');
headers.set('X-Version', '2.0');
const response = await fetch(`${BASE_URL}/api/echo/`, { headers });
const data = await response.json();
console.log(data.headers);
}
main();