Implantar Ferramentas de API com Cloudflare Workers
Início Rápido
Como a Extensão de API do Paragraph requer um endereço de internet publicamente acessível como um Endpoint de API, precisamos implantar nossa extensão de API em um endereço público na internet.
Abra o arquivo wrangler.toml e modifique name e compatibility_date para o nome e a data de compatibilidade da sua aplicação.
Uma configuração importante aqui é o TOKEN em vars, que você precisará fornecer ao adicionar a extensão de API no Paragraph. Por razões de segurança, é recomendável usar uma string aleatória como o Token. Você não deve escrever o Token diretamente no código-fonte, mas passá-lo através de variáveis de ambiente. Portanto, não faça commit do seu wrangler.toml no seu repositório de código.
name = "extension-example"
compatibility_date = "2023-01-01"
[vars]
TOKEN = "bananaiscool"Esta extensão de API retorna uma citação aleatória de "Breaking Bad". Você pode modificar a lógica desta extensão de API em src/index.ts. Este exemplo mostra como interagir com uma API de terceiros.
// ⬇️ implemente sua lógica aqui ⬇️
// point === "app.external_data_tool.query"
// https://api.breakingbadquotes.xyz/v1/quotes
const count = params?.inputs?.count ?? 1;
const url = `https://api.breakingbadquotes.xyz/v1/quotes/${count}`;
const result = await fetch(url).then(res => res.text())
// ⬆️ implemente sua lógica aqui ⬆️Este repositório simplifica todas as configurações, exceto para a lógica de negócios. Você pode usar diretamente os comandos npm para implantar sua extensão de API.
npm run deployApós a implantação bem-sucedida, você obterá um endereço público na internet, que poderá adicionar no Paragraph como um Endpoint de API. Observe para não esquecer o caminho do endpoint.

Adicionando Endpoint de API no Paragraph

import { bearerAuth } from "hono/bearer-auth";
(c, next) => {
const auth = bearerAuth({ token: c.env.TOKEN });
return auth(c, next);
},Nossa lógica de autenticação Bearer é mostrada acima. Usamos o pacote hono/bearer-auth para autenticação Bearer. Você pode usar c.env.TOKEN em src/index.ts para obter o Token.
Sobre Validação de Parâmetros
import { z } from "zod";
import { zValidator } from "@hono/zod-validator";
const schema = z.object({
point: z.union([
z.literal("ping"),
z.literal("app.external_data_tool.query"),
]), // Restringe 'point' a dois valores específicos
params: z
.object({
app_id: z.string().optional(),
tool_variable: z.string().optional(),
inputs: z.record(z.any()).optional(),
query: z.any().optional(), // string ou null
})
.optional(),
});Usamos zod para definir os tipos de parâmetros. Você pode usar zValidator em src/index.ts para validação de parâmetros. Obtenha parâmetros validados através de const { point, params } = c.req.valid("json");. Nosso point tem apenas dois valores, então usamos z.union para definição. params é um parâmetro opcional, definido com z.optional. Inclui um parâmetro inputs, do tipo Record<string, any> representando um objeto com chaves string e valores de qualquer tipo. Esse tipo pode representar qualquer objeto. Você pode obter o parâmetro count em src/index.ts usando params?.inputs?.count.
Acessando Logs do Cloudflare Workers
wrangler tail