A XML to JSON API é uma aplicação em Node.js com TypeScript que recebe dados em formato XML através de uma rota HTTP, converte esses dados para JSON de forma organizada e retorna como resposta. A API foi desenvolvida seguindo os princípios SOLID, com uma arquitetura escalável adequada para microserviços.
- Pré-requisitos
- Instalação
- Execução
- Docker
- Endpoints
- Estrutura do Projeto
- Tecnologias Utilizadas
- Contribuição
- Licença
- Node.js (versão 20 ou superior)
- npm (versão 10 ou superior)
- Docker (versão 20 ou superior)
- Docker Compose (versão 1.29 ou superior)
Clone o repositório e instale as dependências:
git clone https://github.com/guilhermejansen/xml-to-json-api.git
cd xml-to-json-api
npm installPara executar a aplicação em ambiente de desenvolvimento com hot-reload:
npm run devA aplicação estará disponível em http://localhost:3000.
Para compilar e executar a aplicação em ambiente de produção:
npm run build
npm startPara construir a imagem Docker da aplicação:
docker build -t xml-to-json-api .Para executar o contêiner Docker:
docker run -p 3000:3000 xml-to-json-apiA aplicação estará disponível em http://localhost:3000.
Para construir e executar a aplicação usando Docker Compose:
docker-compose up --buildSe você ainda não inicializou o Docker Swarm:
docker swarm initPara implantar a aplicação em um cluster Docker Swarm:
docker stack deploy -c docker-compose.yml xml-to-json-apiPara verificar se os serviços estão em execução:
docker stack services xml-to-json-apiRecebe um XML no corpo da requisição e retorna o JSON convertido.
- URL:
http://localhost:3000/api/xml/parse - Método:
POST - Headers:
Content-Type: application/xml
- Body: XML a ser convertido.
curl -X POST http://localhost:3000/api/xml/parse \
-H 'Content-Type: application/xml' \
-d '<listings><listing><name>Exemplo</name></listing></listings>'- Status Code:
200 OK - Body: JSON convertido.
[
{
"destination_id": null,
"name": "Exemplo",
"description": "",
"address": {},
"latitude": null,
"longitude": null,
"types": []
}
]├── config
│ └── default.ts
├── src
│ ├── app.ts
│ ├── server.ts
│ ├── controllers
│ │ └── xmlController.ts
│ ├── middlewares
│ │ └── errorHandler.ts
│ ├── routes
│ │ └── xmlRoutes.ts
│ ├── services
│ │ └── xmlService.ts
│ ├── utils
│ │ └── xmlParser.ts
│ └── models
│ └── index.ts
├── .env
├── Dockerfile
├── docker-compose.yml
├── tsconfig.json
├── package.json
└── README.md
- Node.js: Ambiente de execução JavaScript.
- TypeScript: Superset do JavaScript que adiciona tipagem estática.
- Express: Framework web para Node.js.
- xml2js: Biblioteca para converter XML em JSON.
- Docker: Plataforma para construção e execução de aplicativos em contêineres.
- Docker Compose: Ferramenta para definir e executar aplicações Docker multi-contêiner.
- Docker Swarm: Sistema de orquestração nativo do Docker para gerenciar clusters.
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests.
Este projeto está licenciado sob a licença MIT.