Introdução
O desenvolvimento de APIs é uma parte crucial na criação de software moderno. Neste tutorial, vamos explorar o Ballerina, um framework que facilita a construção de APIs de forma segura e eficiente. Iremos aprofundar no Ballerina Swan Lake, com suas funcionalidades que suportam a criação e a implementação de serviços web, bem como as boas práticas de segurança durante o desenvolvimento de APIs. Além disso, discutiremos ferramentas de integração contínua que podem otimizar o ciclo de vida do desenvolvimento, aumentando a confiabilidade e a rapidez nas entregas. O objetivo deste tutorial é fornecer uma compreensão clara e prática sobre como utilizar Ballerina para criar APIs, integrá-las de forma contínua e garantir que elas estejam protegidas contra vulnerabilidades. Você estará pronto para desenvolver APIs que não apenas atendem às necessidades de seus usuários, mas também são seguras e escaláveis.
Etapas
Instalação do Ambiente e Ballerina
Antes de começar a desenvolver, é necessário ter o Ballerina instalado em sua máquina. Visite o site oficial do Ballerina e faça o download da versão mais recente. Após o download, extraia os arquivos e adicione o caminho do executável do Ballerina à variável de ambiente do seu sistema (PATH). Teste a instalação executando o comando `bal version` no terminal.
commands# Baixar e instalar Ballerina
https://ballerina.io/downloads/
# Verificar a instalação
bal versionCriando um Novo Projeto Ballerina
Utilize o comando `bal new` para criar um novo projeto Ballerina. Escolha um nome apropriado para o projeto, como `meu_projeto_api`. Navegue até o diretório do projeto recém-criado.
commands# Criar um novo projeto
bal new meu_projeto_api
# Navegar para o diretório do projeto
cd meu_projeto_apiDesenvolvendo a API com Ballerina
Abra o arquivo `main.bal` na pasta `src/meu_projeto_api/`. Nela, escreva o código que define o serviço RESTful simples, com um endpoint para retornar uma lista de produtos.
main.balimport ballerina/http; service /produtos on new http:Listener(8080) { resource function get .() returns json { json produtos = [ {"id": 1, "nome": "Produto A", "preco": 10.0}, {"id": 2, "nome": "Produto B", "preco": 20.0} ]; return produtos; } }
Implementando Segurança na API
Configure a segurança na API utilizando JWT (JSON Web Tokens). Crie um arquivo `security.bal` onde você irá implementar a lógica para autenticação. Em seguida, modifique o código do serviço para proteger o endpoint usando a autenticação JWT.
security.balimport ballerina/jwt; function authenticate(jwt:JWT j) returns boolean { // Implementar lógica de autenticação return true; } service /produtos on new http:Listener(8080) { resource function get .() returns json { // Aqui vai a lógica, com JWT para autenticação json produtos = [{"id": 1, "nome": "Produto A", "preco": 10.0}, {"id": 2, "nome": "Produto B", "preco": 20.0}]; return produtos; } }
Configurando Ferramentas de Integração Contínua
Para garantir uma entrega contínua eficiente, você pode usar GitHub Actions. Crie um arquivo `.yml` na pasta `.github/workflows/` com a configuração que compila e testa a aplicação a cada push no repositório.
ci.ymlname: Ballerina CI on: push: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Ballerina run: | curl -L https://ballerina.io/downloads/ballerina-linux-amd64.tar.gz | tar -xz sudo mv ballerina-* /usr/local/bin/ballerina - name: Build and test run: bal build
Executando o Projeto e Testando a API
Para rodar o serviço, use o comando `bal run`. Uma vez em execução, você pode usar uma ferramenta como Postman ou cURL para testar o endpoint da API e verificar se os produtos estão retornando corretamente.
commands# Executando a aplicação
bal run
# Testando o endpoint
curl -X GET http://localhost:8080/produtosImplementando Testes Automatizados
Crie o arquivo de testes `produtos_test.bal` na pasta `tests/`. Insira testes para validar o comportamento da API. Utilize o framework de testes do Ballerina.
produtos_test.balimport ballerina/test; import ballerina/http; @test:Config {} public function testGetProdutos() returns error? { http:Client client = new http:Client(8080); json response = check client->get("/produtos"); test:assertEquals(200, response.status(), "Status code should be 200"); }
Conclusão
Neste tutorial, exploramos o Ballerina e criamos uma API RESTful segura e eficiente. Aprendemos a configurar o ambiente de desenvolvimento, implementar a lógica da API, aplicar segurança com JWT, e utilizar ferramentas de integração contínua para aprimorar nosso fluxo de trabalho. Finalmente, vimos como implementar testes automatizados que garantem a qualidade do código. Com esse conhecimento, você poderá criar APIs robustas que atendem a necessidades reais, utilizando as melhores práticas de desenvolvimento com Ballerina.