Перейти к основному содержимому

TypeScript

Начните с руководства gRPC, чтобы создать токен API платформы и скачать platform.proto. Следующие команды запускайте из каталога с этим файлом.

Браузеры не могут открывать нативные соединения gRPC HTTP/2. API платформы также принимает gRPC-Web на своей HTTP/1.1-точке. Установите protoc, плагины protoc-gen-js и protoc-gen-grpc-web и пакеты среды выполнения:

npm install grpc-web google-protobuf
npm install --save-dev @types/google-protobuf
mkdir -p src/generated
protoc -I. platform.proto \
--js_out=import_style=commonjs,binary:src/generated \
--grpc-web_out=import_style=typescript,mode=grpcweb:src/generated

Скачайте плагины компилятора из официальных выпусков и руководства gRPC-Web; они должны быть в PATH. Команда генерирует platform_pb.js, его декларации TypeScript и PlatformServiceClientPb.ts.

import {PlatformServicePromiseClient} from './generated/PlatformServiceClientPb';
import {GetCatalogRequest, ListCatalogsRequest} from './generated/platform_pb';

// Supply a token at runtime. Do not bundle a long-lived API token in browser code.
export async function listCatalogDetails(token: string) {
const client = new PlatformServicePromiseClient('https://reconstruct.dev');
const metadata = {authorization: `Bearer ${token}`};
const listRequest = new ListCatalogsRequest();
listRequest.setPageSize(10);

const page = await client.listCatalogs(listRequest, metadata);
for (const catalog of page.getCatalogsList()) {
const detailRequest = new GetCatalogRequest();
detailRequest.setCatalogId(catalog.getCatalogId());
const detail = await client.getCatalog(detailRequest, metadata);
console.log(detail.getCatalogId(), detail.getDescription());
}
}

Для браузерного приложения публичный API должен разрешать его источник через CORS. Постоянные токены API храните на доверенном сервере; браузерная сборка не защищает встроенный секрет.