Lewati ke konten utama

TypeScript

Mulai dari panduan gRPC untuk membuat token Platform API dan mengunduh platform.proto. Jalankan perintah di bawah dari direktori yang berisi berkas tersebut.

Browser tidak dapat membuka koneksi HTTP/2 gRPC native. Platform API juga menerima gRPC-Web pada endpoint HTTP/1.1. Pasang protoc, plugin protoc-gen-js dan protoc-gen-grpc-web, serta paket runtime:

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

Unduh plugin kompiler dari rilis dan panduan pengaturan resmi gRPC-Web; plugin harus berada di PATH. Perintah menghasilkan platform_pb.js, deklarasi TypeScript-nya, dan 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());
}
}

Untuk aplikasi browser, API publik harus mengizinkan origin aplikasi melalui CORS. Simpan token API persisten pada server tepercaya; bundel browser tidak dapat melindungi rahasia yang disematkan.