Uma aplicação React moderna para visualização e teste de APIs através de documentação Swagger/OpenAPI.
flowchart TB
subgraph Frontend
UI[SwaggerUI Component]
Router[React Router]
State[State Management]
end
subgraph Core
Parser[OpenAPI Parser]
Validator[Schema Validator]
Mock[Mock Service]
end
subgraph External
API[Real API]
Docs[OpenAPI Specs]
end
UI --> Router
Router --> State
State --> Parser
Parser --> Validator
Parser --> Mock
Mock --> API
Docs --> Parser
style Frontend fill:#e1f5fe
style Core fill:#fff3e0
style External fill:#f1f8e9
sequenceDiagram
participant U as Usuário
participant UI as Interface
participant P as Parser
participant M as Mock Service
participant A as API Real
U->>UI: Seleciona Endpoint
UI->>P: Processa Spec
P->>UI: Retorna Metadata
U->>UI: Executa Requisição
alt Modo Mock
UI->>M: Envia Requisição
M->>UI: Retorna Dados Mock
else Modo Produção
UI->>A: Envia Requisição
A->>UI: Retorna Dados Reais
end
UI->>U: Exibe Resultado
graph TD
A[swagger-ui] --> B[src]
A --> C[public]
A --> D[config]
B --> E[components]
B --> F[hooks]
B --> G[utils]
E --> H[ApiEndpoint]
E --> I[Documentation]
E --> J[Layout]
E --> K[SwaggerUI]
D --> L[webpack.config.js]
D --> M[jest.config.js]
style A fill:#e1f5fe
style B fill:#fff3e0
style C fill:#f1f8e9
style D fill:#fff3e0
- 📚 Visualização interativa de documentação Swagger/OpenAPI
- 🔍 Exploração de endpoints da API
- 🧪 Interface para testar chamadas à API
- 📱 Design responsivo
- 🎨 Interface moderna com Tailwind CSS
- 🔄 Simulação de chamadas à API com dados mock
- 🌐 Suporte a múltiplos formatos de especificação OpenAPI
- 🔒 Suporte a autenticação e autorização
- 📊 Visualização de esquemas de dados
stateDiagram-v2
[*] --> ValidaçãoEntrada
ValidaçãoEntrada --> ProcessamentoSpec
ProcessamentoSpec --> PreparaçãoRequisição
PreparaçãoRequisição --> ModeMock: Mock Ativado
PreparaçãoRequisição --> ModeProduction: Mock Desativado
ModeMock --> GeraçãoResposta
ModeProduction --> ChamadaAPI
ChamadaAPI --> ProcessamentoResposta
GeraçãoResposta --> ExibiçãoResultado
ProcessamentoResposta --> ExibiçãoResultado
ExibiçãoResultado --> [*]
- Node.js (versão 14 ou superior)
- npm (gerenciador de pacotes do Node.js)
- Clone o repositório:
git clone https://github.com/govinda777/swagger-ui.git
cd swagger-ui
- Instale as dependências:
npm install -g serve --registry=https://registry.npmjs.org/
npm install --registry=https://registry.npmjs.org/
npm install --save-dev @babel/preset-react @babel/preset-env --registry=https://registry.npmjs.org/
- Inicie o servidor de desenvolvimento:
npm start
graph LR
A[Inicialização] --> B[Carrega .env]
B --> C[Configura Cliente]
C --> D[Inicializa Parser]
D --> E[Configura Rotas]
E --> F[Prepara UI]
style A fill:#f9f9f9
style B fill:#e1f5fe
style C fill:#fff3e0
style D fill:#f1f8e9
style E fill:#fce4ec
style F fill:#f3e5f5
export const swaggerSpec = {
openapi: "3.0.0",
info: {
title: "Sua API",
version: "1.0.0",
description: "Descrição da sua API"
},
servers: [
{
url: "https://api.exemplo.com",
description: "Servidor de Produção"
}
],
paths: {
// Seus endpoints aqui
}
};
module.exports = {
theme: {
extend: {
colors: {
primary: {
light: '#4FD1C5',
DEFAULT: '#38B2AC',
dark: '#319795',
},
},
fontFamily: {
sans: ['Inter', 'sans-serif'],
},
},
},
plugins: [
require('@tailwindcss/forms'),
require('@tailwindcss/typography'),
],
};
npm start
: Inicia o servidor de desenvolvimentonpm run build
: Cria uma build de produçãonpm test
: Executa os testesnpm run lint
: Verifica o código com ESLintnpm run format
: Formata o código com Prettier
graph TD
A[Início Teste] --> B[Testes Unitários]
B --> C[Testes de Integração]
C --> D[Testes E2E]
D --> E[Cobertura]
E --> F[Relatório]
style A fill:#f9f9f9
style B fill:#e1f5fe
style C fill:#fff3e0
style D fill:#f1f8e9
style E fill:#fce4ec
style F fill:#f3e5f5
Execute os testes com:
npm test
Para cobertura de testes:
npm test -- --coverage
gitGraph
commit id: "initial"
branch feature
checkout feature
commit id: "feature-1"
commit id: "feature-2"
checkout main
merge feature
commit id: "release"
- Faça um fork do projeto
- Crie sua branch de feature (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add: nova funcionalidade incrível'
) - Push para a branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
import SwaggerUI from './components/SwaggerUI';
function App() {
return (
<SwaggerUI
spec={swaggerSpec}
options={{
deepLinking: true,
defaultModelsExpandDepth: 1,
defaultModelExpandDepth: 1,
}}
/>
);
}
<SwaggerUI
spec={swaggerSpec}
authConfig={{
type: 'bearer',
token: 'seu-token-aqui'
}}
/>
graph TD
A[Identificar Bug] --> B[Criar Issue]
B --> C[Reproduzir]
C --> D[Investigar]
D --> E[Corrigir]
E --> F[Testar]
F --> G[Merge]
style A fill:#f9f9f9
style B fill:#e1f5fe
style C fill:#fff3e0
style D fill:#f1f8e9
style E fill:#fce4ec
style F fill:#f3e5f5
style G fill:#e8eaf6
Ao reportar um bug, inclua:
- Como reproduzir o problema
- O que era esperado
- O que aconteceu
- Screenshots (se aplicável)
- Ambiente (navegador, OS, etc)
- App.js: Componente principal da aplicação que renderiza o componente
SwaggerUI
. - SwaggerUI.js: Componente responsável por renderizar a interface do Swagger.
A aplicação utiliza três arquivos de configuração do Webpack:
- webpack.common.js: Contém a configuração comum usada tanto em desenvolvimento quanto em produção.
- webpack.dev.js: Configuração específica para o ambiente de desenvolvimento.
- webpack.prod.js: Configuração específica para o ambiente de produção.
- start: Inicia o servidor de desenvolvimento.
- build: Gera o build de produção.
- test: Executa os testes unitários com cobertura.
- predeploy: Gera o build de produção antes do deploy.
- deploy: Faz o deploy da aplicação para o GitHub Pages.
Os testes são escritos utilizando o Jest e o React Testing Library. Os arquivos de teste estão localizados no mesmo diretório dos componentes que eles testam e seguem o padrão *.test.js
.
A aplicação utiliza o Tailwind CSS para estilização. Os estilos são processados pelo PostCSS através do postcss-loader
no Webpack.
O deploy da aplicação é feito automaticamente para o GitHub Pages utilizando o GitHub Actions. O workflow de deploy está configurado no arquivo .github/workflows/deploy.yml
.
Para suporte, entre em contato através das issues do GitHub ou envie um email para [[email protected]]
chmod +x local-deploy.sh
Para suporte, entre em contato através das issues do GitHub ou envie um email para [[email protected]]