HTTP запросы

Создание HTTP запроса #

Параметры метода для выполнения HTTP запроса взяты из веб-браузера.

fetch()

function fetch(url: string, fetchOptions: FetchOptions = {}): Promise<Response>

Принимает параметры:

type FetchOptions = {
  body?: any,
  method?: string,
  headers?: Record<string, string>
}

Возвращает объект Response:

type Response = {
  status: number,
  json<T = any>(): T,
  text(): string,
  dispose(): void
}
Объект Response представляет собой загруженные данные. Можно его декодировать в нужный формат, а можно использовать для создания UI-изображений, текстур, шейдеров и т.д.

Response.json()

Декодирует ответ как JSON и возвращает JS объект

Response.text()

Декодирует ответ как текст в кодировке utf-8 и возвращает JS строку.

Обратите внимание, что методы .json() и .text() являются синхронными и сразу возвращают результат, а не Promise, как в веб-браузере

Применение fetch #

Отображение информации по API

fetch("https://creator.jt3.ru/api").then((resp) => {
toast(resp.text())
})

Отображение предварительно загруженного изображения

import { UIImage, UIScreen } from 'ui'

fetch("https://creator.jt3.ru/docs-assets/favicon-D2spz8Iz.png").then((resp) => {
const image = UIImage(resp)

UIScreen([ image ]).open()
})

Создание шейдера

import { Material, Entity, Mesh } from 'ui'
import shaderSrc from './lit.mat'

fetch(shaderSrc).then((shaderResp) => {
const material = new Material(shaderResp)

const cube = new Entity(Mesh.createCube())
cube.material = material
})