WEB3DEV

Cover image for Recursos da Apillon: Chamadas de API Para Serviços Web3
Panegali
Panegali

Posted on

Recursos da Apillon: Chamadas de API Para Serviços Web3

As APIs da Apillon oferecem uma conectividade direta com as parachains da Polkadot, respeitando o fluxo de trabalho de desenvolvimento padrão.


Um dos principais obstáculos para a adoção da Web3 é o processo de desenvolvimento. As APIs da Apillon encurtam a maneira como os produtos Web3 são construídos, poupando aos desenvolvedores o trabalho de mergulhar nas especificidades, lógica e requisitos de cada parachain.

Desvantagens do acesso padrão a Web3

Se você decidir codificar um projeto Web3 ou implementar um provedor de serviços descentralizado em seu site ou aplicativo existente a partir do zero, enfrentará uma curva de aprendizado acentuada e um risco potencialmente alto de que as coisas dêem errado.

Lutar com a Web3 com as mãos nuas pode ser extremamente pesado em termos de recursos, embora ainda não garanta nenhuma vitória. Há muitas incertezas ao longo do caminho, e todo desenvolvedor, mesmo os veteranos da Web3, podem facilmente ignorar etapas importantes, levando a uma profunda frustração e até mesmo ao abandono total da missão da Web3.

🔎 Saiba mais sobre os desafios de construir na Web3.

Para simplificar o processo de desenvolvimento e traze-lo a termos que todos os desenvolvedores devem estar familiarizados, a Apillon apresenta conectividade de APIs com as parachains vinculadas da Polkadot e seus serviços Web3.

APIs Web3 da Apillon

A Apillon integra várias parachains da Polkadot e oferece acesso direto a serviços descentralizados vinculados de duas maneiras:

  • Uma implantação drag-and-drop (arrastar e soltar) de serviços Web3 no painel da Apillon.
  • Chaves de API.

Nesta postagem, vamos nos aprofundar no último, onde as APIs da Apillon aprimoram e agilizam o processo de codificação de projetos Web3.

O que é uma API da Apillon ?

A API da Apillon é um conjunto de terminais de API RESTful (é uma interface que dois sistemas de computador usam para trocar informações de forma segura pela internet) que permite integrar módulos de serviços Web3 da Apillon em seu projeto Web3.

Usando as APIs da Apillon, você faz uma chamada para um servidor e recebe a resposta pelo protocolo HTTP.

Para garantir a privacidade e a segurança do desenvolvimento do projeto Web3, todas as rotas são privadas e requerem o uso de uma chave de API.

Agora, vamos ver como usar as APIs da Apillon ao codificar seu projeto Web3.

Especificações da API da Apillon

Requisições (Requests)

O servidor suporta JSON e, por essa razão, toda chamada ao servidor deve incluir um cabeçalho Content-Type definido como application/json;.

Autenticação e autorização

As rotas da API da Apillon garantem a privacidade, restringindo o acesso público e exigindo autenticação.

Ao criar requisições, você deve, portanto, incluir um campo de cabeçalho HTTP de autenticação básica na forma de Authorization: Basic <credentials>, em que as credenciais representam a codificação Base64 da chave de API e o segredo da chave de API unidos por dois pontos simples :.

Você pode gerar chaves de API no painel da Apillon em “Project settings” (Configurações do projeto).

Geração da chave de API no painel da Apillon

Detalhes da chave de API no painel da Apillon

Uma vez gerada, você pode usar a chave de API em seu projeto.

Respostas (Responses)

Cada resposta tem um ID exclusivo para ajudá-lo a identificar possíveis problemas na conectividade da API ou nos serviços acessados. Ele também inclui um código de status para que você possa identificar rapidamente a causa de um possível problema.

As requisições de consulta por meio do método GETpodem retornar códigos de status 200, 400, 401, 403 ou 500, indicando sucesso, solicitação inválida, acesso não autenticado ou não autorizado ou erro de sistema.

As mutações através de POST, PUTe DELETEpodem retornar códigos 201 e 422, ou seja, criação bem-sucedida ou falha na validação de dados. E rotas inválidas retornam código de status 404, indicando caminho não encontrado.

Uma requisição bem-sucedida inclui uma chave data, que contém um objeto de resposta válido.

🔎 Saiba mais sobre a API Web3 da Apillon, respostas, tratamento de erros e validação no Wiki da Apillon. 👇

Image description

API para Web3 (Wiki da Apillon)

Agora, com a teoria fora do caminho, vamos mergulhar no conteúdo das APIs que se conectam aos dois serviços Web3 acessíveis no Apillon Beta:

  • API Web3 de armazenamento.
  • API Web3 de hospedagem.

Mais APIs serão disponibilizadas nas próximas versões da plataforma Apillon, fique atento.

API Web3 de armazenamento

A API Web3 de armazenamento da Apillon se conecta à rede Crust, permitindo que você armazene seus arquivos de forma descentralizada.

Antes de começar a usar a API Web3 de armazenamento, há duas coisas a serem lembradas:

  • Você deve primeiro criar um bucket de armazenamento no painel da Apillon.
  • Em todos os exemplos de cURL (é uma ferramenta para transferir dados de/para um servidor, usando um dos protocolos suportados), os parâmetros com dois pontos como prefixo devem ser substituídos por valores reais.

Processo de upload de arquivo via API Web3 de armazenamento da Apillon

Os arquivos que você armazena na rede Crust são carregados da seguinte forma:

  1. Requisitar URL(s) assinado(s) para upload.
  2. O arquivo é carregado no servidor central da Apillon.
  3. O arquivo é transferido para o IPFS (InterPlanetary File System ou Sistema de Arquivo InterPlanetário) e disponibilizado por meio do gateway da Apillon.
  4. O arquivo é replicado para diferentes nós do IPFS globalmente via rede Crust.

Agora, vamos fazer isso passo a passo usando a API da Apillon.

Como utilizar a API Web3 de armazenamento da Apillon

Faça upload para o bucket de armazenamento

Primeiro, crie solicitações de upload de arquivo que retornem URLs para upload de arquivo junto com a sessionUuid.

🔻 cURL

curl --location --request POST "https://api.apillon.io/storage/:bucketUuid/upload" \
--header "Authorization: Basic :credentials" \
--header "Content-Type: application/json" \
--data-raw "{
   \"files\": [
       {
           \"fileName\": \"Meu arquivo de teste\",
           \"contentType\": \"text/html\"
       }
   ]

}"
Enter fullscreen mode Exit fullscreen mode

🔻 Resposta

{
 "id": "cbdc4930-2bbd-4b20-84fa-15daa4429952",
 "status": 201,
 "data": {
   "sessionUuid": "3b6113bc-f265-4662-8cc5-ea86f06cc74b",
   "files": [
     {
       "path": null,
       "fileName": "Meu arquivo de teste",
       "contentType": "text/html",
       "url": "https://sync-to-ipfs-queue.s3.eu-west-1.amazonaws.com/STORAGE_sessions/73/3b6113bc-f265-4662-8cc5-ea86f06cc74b/My%20test%20file?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAQIMRRA6GJRL57L7G%2F20230215%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230215T114524Z&X-Amz-Expires=900&X-Amz-Signature=499367f6c6bff5be50686724475ac2fa6307b77b94fd1a25584c092fe74b0a58&X-Amz-SignedHeaders=host&x-id=PutObject",
       "fileUuid": "4ef1177b-f7c9-4434-be56-a559cec0cc18"
     }
   ]
 }
}
Enter fullscreen mode Exit fullscreen mode

Encerre a sessão de upload
Assim que os arquivos forem carregados para o servidor na nuvem por meio do URL recebido, acione a sincronização de arquivos para o IPFS e a Crust.

🔻 cURL

curl --location --request POST "https://api.apillon.io/storage/:bucketUuid/upload/:sessionUuid/end" \
--header "Authorization: Basic :credentials" \
--header "Content-Type: application/json" \
--data-raw "{
   \"directSync\": true
}"
Enter fullscreen mode Exit fullscreen mode

🔻 Resposta

{
 "id": "b64b1c07-1a8a-4b05-9e3b-3c6a519d6ff7",
 "status": 200,
 "data": true
}
Enter fullscreen mode Exit fullscreen mode

Obtenha o conteúdo do bucket
Em seguida, obtenha diretórios e arquivos do bucket de armazenamento. Observe que os itens são paginados e podem ser filtrados e ordenados por meio de parâmetros de consulta.

🔻 cURL básico

curl --location --request GET "https://api.apillon.io/storage/:bucketUuid/content" \
--header "Authorization: Basic :credentials"
Enter fullscreen mode Exit fullscreen mode

🔻 cURL com parâmetros

curl --location --request GET "https://api.apillon.io/storage/:bucketUuid/content?orderBy=name&desc=false&limit=5&page=1" \
--header "Authorization: Basic :credentials"
Enter fullscreen mode Exit fullscreen mode

🔻 Resposta

{
   "id": "c8c50b3b-91ff-42c7-b0af-f866ce23f18a",
   "status": 200,
   "data": {
       "items": [
           ...
           {
               "type": 1,
               "id": 11,
               "status": 5,
               "name": "My directory",
               "CID": null,
               "createTime": "2022-12-08T13:27:00.000Z",
               "updateTime": "2023-01-10T12:18:55.000Z",
               "contentType": null,
               "size": null,
               "parentDirectoryId": null,
               "fileUuid": null,
               "link": null
           },
           {
               "type": 2,
               "id": 397,
               "status": 5,
               "name": "My file.txt",
               "CID": "QmcG9r6Rdw9ZdJ4imGBWc6mi5VzWHQfkcLDMe2aP74eb42",
               "createTime": "2023-01-19T10:10:01.000Z",
               "updateTime": "2023-01-19T10:10:31.000Z",
               "contentType": "text/plain",
               "size": 68,
               "parentDirectoryId": null,
               "fileUuid": "0a775bfa-a0d0-4e0b-9a1e-e909e426bd11",
               "link": "https://ipfs.apillon.io/ipfs/QmcG9r6Rdw9ZdJ4imGBWc6mi5VzWHQfkcLDMe2aP74eb42"
           }
           ...
       ],
       "total": 10
   }
}
Enter fullscreen mode Exit fullscreen mode

Obtenha os detalhes do arquivo

Por fim, obtenha os detalhes de um arquivo específico dentro de um bucket de armazenamento.

🔻 cURL

curl --location --request GET "https://api.apillon.io/storage/:bucketUuid/file/:id/detail" \
--header "Authorization: Basic :credentials"
Enter fullscreen mode Exit fullscreen mode

🔻 Resposta

{
 "id": "5be33c54-2cc9-46f4-8f50-debc98866810",
 "status": 200,
 "data": {
   "fileStatus": 4,
   "file": {
     "id": 397,
     "status": 5,
     "fileUuid": "0a775bfa-a0d0-4e0b-9a1e-e909e426bd11",
     "CID": "QmcG9r6Rdw9ZdJ4imGBWc6mi5VzWHQfkcLDMe2aP74eb42",
     "name": "Meu arquivo.txt",
     "contentType": "text/plain",
     "size": 68,
     "fileStatus": 4,
     "downloadLink": "https://ipfs.apillon.io/ipfs/QmcG9r6Rdw9ZdJ4imGBWc6mi5VzWHQfkcLDMe2aP74eb42"
   }
 }
}
Enter fullscreen mode Exit fullscreen mode

Pronto, seus arquivos agora devem estar armazenados na rede Crust.

Excluir arquivo

Para excluir um arquivo, você pode marcá-lo para exclusão dentro de um depósito de armazenamento usando id, fileUuidou CID. O arquivo será completamente excluído do sistema da Apillon e do nó Apillon IPFS após três meses. Uma vez que um arquivo é marcado para exclusão, ele não será renovado na Rede Crust.

🔻 cURL

curl --location --request DELETE "https://api.apillon.io/storage/:bucketUuid/file/:id" \
--header "Authorization: Basic :credentials" \
--data-raw ""
Enter fullscreen mode Exit fullscreen mode

🔻 Resposta

{
 "id": "bc92ff8d-05f2-4380-bb13-75a1b6b7f388",
 "status": 200,
 "data": {
   "id": 397,
   "status": 8,
   "fileUuid": "0a775bfa-a0d0-4e0b-9a1e-e909e426bd11",
   "CID": "QmcG9r6Rdw9ZdJ4imGBWc6mi5VzWHQfkcLDMe2aP74eb42",
   "name": "Meu arquivo .txt",
   "contentType": "text/plain",
   "size": 68,
   "fileStatus": 4
 }
}
Enter fullscreen mode Exit fullscreen mode

Voilá, você passou por todo o processo de upload de arquivos para o armazenamento descentralizado via Rede Crust e API da Apillon.

Mergulhe em mais detalhes, parâmetros, metadados e status da API Web3 de Armazenamento e conecte o serviço de armazenamento descentralizado da Rede Crust ao seu site ou aplicativo. 👇

API Web3 de armazenamento (Wiki Apillon)

API Web3 de Hospedagem

A API Web3 de Hospedagem da Apillon se conecta à Rede Crust, onde você pode hospedar seu site de forma descentralizada.

Antes de começar a usar a API Web3 de Hospedagem, há duas coisas a serem lembradas:

  • Você deve primeiro criar um site no painel da Apillon.
  • Em todos os exemplos de cURL, os parâmetros com dois pontos como prefixo devem ser substituídos por valores reais.

Processo de implantação de site via API Web3 de Hospedagem da Apillon

A API de hospedagem da Apillon fornece endpoints (pontos de extremidade) que podem ser usados ​​para implementar CI/CD.

O site que você hospeda na Rede Crust é implantado da seguinte forma:

  1. Os arquivos do site são enviados para o servidor em nuvem da Apillon.
  2. Solicita URLs para upload de arquivos.
  3. Os arquivos são enviados para um servidor em nuvem.
  4. Dispara a transferência para o site.
  5. Implantação em ambiente de teste ou produção.

Agora, vamos fazer passo a passo usando a API da Apillon.

Como usar a API Web3 de hospedagem da Apillon

Obter URLs para upload de arquivos

Primeiro, criar requisições de upload de arquivos que retornem URLs para upload de arquivo.

🔻 cURL

curl --location --request POST "https://api.apillon.io/hosting/websites/:websiteUuid/upload" \
--header "Authorization: Basic :credentials" \
--header "Content-Type: application/json" \
--data-raw "{
   \"files\": [
       {
           \"fileName\": \"index.html\",
           \"contentType\": \"text/html\"
       },
       {
           \"fileName\": \"styles.css\",
           \"contentType\": \"text/css\",
           \"path\": \"assets/\"
       }

   ]

}"
Enter fullscreen mode Exit fullscreen mode

🔻 Resposta

{
 "id": "7dd011ec-20e2-4c28-b585-da6c6f7fce8d",
 "status": 201,
 "data": {
   "sessionUuid": "29ef6ca2-b171-440c-b934-db8aa88c3424",
   "files": [
     {
       "path": null,
       "fileName": "index.html",
       "contentType": "text/html",
       "url": "https://sync-to-ipfs-queue.s3.eu-west-1.amazonaws.com/HOSTING_sessions/70/29ef6ca2-b171-440c-b934-db8aa88c3424/index.html?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAQIMRRA6GJRL57L7G%2F20230215%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230215T105030Z&X-Amz-Expires=900&X-Amz-Signature=187035d2307bc089101eff3abbdd7baa3e8691b4d5d3bafa5aebb87e589e8c0c&X-Amz-SignedHeaders=host&x-id=PutObject",
       "fileUuid": "e17436a1-5292-4380-ad91-eaac02a862b1"
     },
     {
       "path": "assets/",
       "fileName": "styles.css",
       "contentType": "text/css",
       "url": "https://sync-to-ipfs-queue.s3.eu-west-1.amazonaws.com/HOSTING_sessions/70/29ef6ca2-b171-440c-b934-db8aa88c3424/assets/styles.css?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAQIMRRA6GJRL57L7G%2F20230215%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230215T105030Z&X-Amz-Expires=900&X-Amz-Signature=f91b03a951fe3f99291802306be3e79812ca64e39effbb7dea1c19bb7cd1e42b&X-Amz-SignedHeaders=host&x-id=PutObject",
       "fileUuid": "358c2942-4ced-421e-9a6f-edbf94c55dff"
     }
   ]
 }
}
Enter fullscreen mode Exit fullscreen mode

2. Fim da sessão de upload
Agora, transfira arquivos para o bucket de armazenamento do site, que é usado como fonte para implantação em um ambiente de encenação (pré-visualização).

🔻 cURL

curl --location --request POST "https://api.apillon.io/hosting/websites/:websiteUuid/upload/:sessionUuid/end" \
--header "Authorization: Basic :credentials" \
--header "Content-Type: application/json" \
--data-raw "{
   \"directSync\": true
}"
Enter fullscreen mode Exit fullscreen mode

🔻 Resposta

{
 "id": "b64b1c07-1a8a-4b05-9e3b-3c6a519d6ff7",
 "status": 200,
 "data": true
}
Enter fullscreen mode Exit fullscreen mode

3. Implantar site

Em seguida, utilize o endpoint para acionar a implantação do site em um ambiente específico.

🔻 cURL

curl --location --request POST "https://api.apillon.io/hosting/websites/:websiteUuid/deploy" \
--header "Authorization: Basic :credentials" \
--header "Content-Type: application/json" \
--data-raw "{
   \"environment\": 1
}"
Enter fullscreen mode Exit fullscreen mode

🔻 Resposta

{
 "id": "32eff81a-6b0b-4a92-a5cb-e5cebf6d6c28",
 "status": 200,
 "data": {
   "id": 51,
   "status": 5,
   "websiteId": 4,
   "bucketId": 62,
   "environment": 1,
   "deploymentStatus": 0,
   "cid": null,
   "size": null,
   "number": 11
 }
}
Enter fullscreen mode Exit fullscreen mode

4. Obter a implantação

Agora, dispare o endpoint para iniciar a implantação.

🔻 cURL

curl --location --request GET "https://api.apillon.io/hosting/websites/:websiteUuid/deployments/:deploymentId" \
--header "Authorization: Basic :credentials"
Enter fullscreen mode Exit fullscreen mode

🔻 Resposta

{
 "id": "2d7d1b0c-15b1-4816-9aec-857182c7b617",
 "status": 200,
 "data": {
   "id": 51,
   "status": 5,
   "bucketId": 62,
   "environment": 1,
   "deploymentStatus": 10,
   "cid": "QmY3KF4F6Ap5HbrwWpq8dTVaR65Cd674jYXKBayNynDASJ",
   "size": 289,
   "number": 11
 }
}
Enter fullscreen mode Exit fullscreen mode

5. Obter o site
Por fim, obtenha seu site disparando o endpoint para retornar dados básicos do site, juntamente com links IPNS.

🔻 cURL

curl --location --request GET "https://api.apillon.io/hosting/websites/:websiteUuid" \
--header "Authorization: Basic :credentials"
Enter fullscreen mode Exit fullscreen mode

🔻 Resposta

{
 "id": "0eb223ce-51c0-4a9b-96ce-331a1cd99603",
 "status": 200,
 "data": {
   "id": 4,
   "status": 5,
   "name": "My test page",
   "description": null,
   "domain": "",
   "bucketUuid": "57aef0fc-84cb-4564-9af2-0f7bfc0ef729",
   "ipnsStagingLink": "https://ipfs.apillon.io/ipns/k2k4r8p6fvcyq5qogaqdtvmqn5vyvyy3khut1llkrz13ls16ocp4gojx",
   "ipnsProductionLink": "https://ipfs.apillon.io/ipns/k2k4r8ng8nqexubrmbwnhsuu1d6n4ebgnxsbdcu9gxk8uv3l67098hge"
 }
}
Enter fullscreen mode Exit fullscreen mode

É isso, em apenas alguns passos, você atualizou a hospedagem do seu site para um nível descentralizado.

Mergulhe nas especificidades da API Web3 de Hospedagem e conecte-se ao armazenamento descentralizado da Rede Crust para hospedar seu site ou aplicativo. 👇

API Web3 de hospedagem (Apillon Wiki)

Acesse a Web3 da maneira APIllon

A API da Apillon fornece conectividade direta aos serviços das parachains da Polkadot, respeitando o fluxo de trabalho de desenvolvimento padrão.

Ao acessar os serviços Web3 por meio de APIs, você pode iniciar seu projeto Web3 mais rapidamente e com quase nada para interromper, pois você controla todo o código.

Conte-nos o que você acha das APIs da Apillon e construa!

Vá para o Wiki da Apillon

Vá para o painel da Apillon

Junte-se ao grupo da Apillon no Telegram.

⧓ Sobre a Apillon

A plataforma Apillon serve como um gateway unificado para os serviços Web3 fornecidos pelas parachains vinculadas da Polkadot. Seguindo a visão multi-chain, a Apillon potencializa a transição de desenvolvedores para a Web3, simplificando sua adoção na economia real e expandindo sua versatilidade à medida que o ecossistema cresce. Com a Apillon, os serviços Web3 estão ao alcance de todos os desenvolvedores, independentemente de sua formação e experiência com a tecnologia blockchain.

Site | Wiki | GitHub | Twitter | Discord | Linkedin | Reddit


O artigo original encontra-se no blog da Apillon no Medium. Traduzido por Marcelo Panegali.

Top comments (0)