Skip to content

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.

License

Notifications You must be signed in to change notification settings

guilhermejansen/xml-to-json-api

Repository files navigation

XML to JSON API

Descrição

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.

Índice

Pré-requisitos

  • 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)

Instalação

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 install

Execução

Em Ambiente de Desenvolvimento

Para executar a aplicação em ambiente de desenvolvimento com hot-reload:

npm run dev

A aplicação estará disponível em http://localhost:3000.

Em Ambiente de Produção

Para compilar e executar a aplicação em ambiente de produção:

npm run build
npm start

Docker

Construir a Imagem Docker

Para construir a imagem Docker da aplicação:

docker build -t xml-to-json-api .

Executar o Contêiner Docker

Para executar o contêiner Docker:

docker run -p 3000:3000 xml-to-json-api

A aplicação estará disponível em http://localhost:3000.

Usando Docker Compose

Para construir e executar a aplicação usando Docker Compose:

docker-compose up --build

Deploy com Docker Swarm

Inicializar o Swarm

Se você ainda não inicializou o Docker Swarm:

docker swarm init

Implantar a Stack

Para implantar a aplicação em um cluster Docker Swarm:

docker stack deploy -c docker-compose.yml xml-to-json-api

Verificar os Serviços

Para verificar se os serviços estão em execução:

docker stack services xml-to-json-api

Endpoints

POST /api/xml/parse

Recebe um XML no corpo da requisição e retorna o JSON convertido.

Requisição

  • URL: http://localhost:3000/api/xml/parse
  • Método: POST
  • Headers:
    • Content-Type: application/xml
  • Body: XML a ser convertido.

Exemplo com cURL

curl -X POST http://localhost:3000/api/xml/parse \
     -H 'Content-Type: application/xml' \
     -d '<listings><listing><name>Exemplo</name></listing></listings>'

Resposta

  • Status Code: 200 OK
  • Body: JSON convertido.
[
  {
    "destination_id": null,
    "name": "Exemplo",
    "description": "",
    "address": {},
    "latitude": null,
    "longitude": null,
    "types": []
  }
]

Estrutura do Projeto

├── 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

Tecnologias Utilizadas

  • 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ção

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests.

Licença

Este projeto está licenciado sob a licença MIT.

About

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.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published