Scramble: Como Automatizar a Documentação de APIs no Laravel de Forma Eficiente

Scramble: Como Automatizar a Documentação de APIs no Laravel de Forma Eficiente

A documentação eficaz de APIs é fundamental para o desenvolvimento de aplicações robustas e de fácil manutenção. No ecossistema Laravel, o Scramble se destaca como uma ferramenta inovadora que automatiza a geração de documentação de APIs, eliminando a necessidade de anotações manuais em PHPDoc.

O que é o Scramble?

O Scramble é um pacote para Laravel que utiliza análise estática de código para gerar automaticamente a documentação da sua API. Ao seguir as convenções do Laravel, ele identifica rotas, parâmetros e respostas, criando uma documentação sempre atualizada e sincronizada com o código.

Principais Recursos

Geração Automática de Documentação: Dispensa a escrita manual de anotações, reduzindo erros e garantindo que a documentação reflita o estado atual do código.

Interface Interativa: Oferece uma interface de usuário baseada em componentes React ou Web Components, permitindo a interação direta com os endpoints documentados.

Conformidade com OpenAPI: Gera documentos no formato OpenAPI, facilitando a integração com outras ferramentas e serviços.

Análise de Validações: Detecta automaticamente parâmetros obrigatórios a partir de validações definidas no código, como em Form Requests ou chamadas ao método validate().

Vantagens de Utilizar o Scramble

Economia de Tempo: Automatiza a criação da documentação, permitindo que os desenvolvedores foquem no desenvolvimento das funcionalidades principais.

Manutenção Simplificada: A documentação se atualiza conforme o código evolui, evitando desatualizações comuns em métodos manuais.

Segurança e Confiabilidade: Ao refletir fielmente o comportamento da API, a documentação gera maior confiança para desenvolvedores e usuários finais.

Como Integrar o Scramble no Seu Projeto Laravel

1. Instalação: Adicione o pacote ao seu projeto via Composer:

O Scramble requer:

  • PHP 8.1 ou superior
  • Laravel 10.x ou superior

Você pode instalar o Scramble via composer:Terminal window

composer require dedoc/scramble

Quando o Scramble é instalado, 2 rotas são adicionadas ao seu aplicativo:

  • /docs/api – Visualizador de IU para sua documentação
  • /docs/api.json – Abre o documento da API no formato JSON descrevendo sua API.

E é isso! Agora você pode visitar /docs/api para ver a documentação da sua API.

Por padrão, essas rotas estão disponíveis apenas no ambiente local. Você pode alterar esse comportamento definindo viewApiDocs gate.

Publicação de configuração

Opcionalmente, você pode publicar o arquivo de configuração do pacote: janela Terminal

php artisan vendor:publish --provider="Dedoc\Scramble\ScrambleServiceProvider" --tag="scramble-config"

Isso permitirá que você personalize a resolução de rotas de API e os detalhes do documento OpenAPI.

O conteúdo da configuração scramble:

<?php

use Dedoc\Scramble\Http\Middleware\RestrictedDocsAccess;

return [
    /*
     * Your API path. By default, all routes starting with this path will be added to the docs.
     * If you need to change this behavior, you can add your custom routes resolver using `Scramble::routes()`.
     */
    'api_path' => 'api',

    /*
     * Your API domain. By default, app domain is used. This is also a part of the default API routes
     * matcher, so when implementing your own, make sure you use this config if needed.
     */
    'api_domain' => null,

    'info' => [
        /*
         * API version.
         */
        'version' => env('API_VERSION', '0.0.1'),

        /*
         * Description rendered on the home page of the API documentation (`/docs/api`).
         */
        'description' => '',
    ],

    /*
     * The list of servers of the API. By default (when `null`), server URL will be created from
     * `scramble.api_path` and `scramble.api_domain` config variables. When providing an array, you
     * will need to specify the local server URL manually (if needed).
     *
     * Example of non-default config (final URLs are generated using Laravel `url` helper):
     *
     * ```php
     * 'servers' => [
     *     'Live' => 'api',
     *     'Prod' => 'https://scramble.dedoc.co/api',
     * ],
     * ```
     */
    'servers' => null,

    'middleware' => [
        'web',
        RestrictedDocsAccess::class,
    ],

    'extensions' => [],
];

Agora, depois de instalar o Scramble, a primeira coisa a fazer é garantir que todas as rotas da API sejam adicionadas aos documentos.

Resolução de rotas

Por padrão, todas as rotas que começam com api são adicionadas à documentação. Por exemplo, yoursite.com/api/users será adicionado aos documentos. Isso pode ser personalizado modificando o valor de configuração scramble.api_path. Por exemplo, se você quiser adicionar todas as rotas que começam com api/v1, você deve definir scramble.api_path como api/v1. Certifique-se de publicar o arquivo de configuração primeiro.

Se suas rotas de API usarem um domínio diferente, você pode contabilizá-lo modificando o valor de configuração scramble.api_domain. Por padrão, ele é definido como null, o que significa que o domínio atual será usado. Então, se suas rotas de API estiverem em api.yoursite.com, você deve definir scramble.api_domain como api.yoursite.com.

Além disso, você pode fornecer sua própria função de resolução de rotas usando Scramble::route no método boot de um provedor de serviços. Dessa forma, você pode excluir rotas ou incluir apenas algumas. Ela terá precedência sobre a correspondência de rota padrão. Por exemplo, em seu AppServiceProvider:

use Illuminate\Support\Str;
use Dedoc\Scramble\Scramble;
use Illuminate\Routing\Route;

public function boot(): void
{
    Scramble::routes(function (Route $route) {
        return Str::startsWith($route->uri, 'api/');
    });
}

A função de resolução de rota aceita uma rota e retorna um bool determinando se a rota deve ser adicionada aos documentos ou não.

Neste ponto, seus documentos devem estar disponíveis em /docs/api URI.

O Scramble representa um avanço significativo na documentação de APIs em Laravel, oferecendo uma solução automatizada, precisa e de fácil integração. Ao adotá-lo, equipes de desenvolvimento podem assegurar que suas APIs estejam sempre bem documentadas, facilitando a colaboração e a manutenção dos projetos.

Para mais detalhes e acesso a documentação: https://scramble.dedoc.co/usage/getting-started

Comments

No comments yet. Why don’t you start the discussion?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *