travels-api

API for Travels Management - UFLA Comp Jr/20 anniversary event

MIT License

Stars
28

travels-api

Uma API em Java e Spring Framework para gerenciamento de viagens.

Como a API deve funcionar?

Nossa API deve criar, atualizar, deletar e listar viagens. Além disso, deve calcular estatísticas sobre as viagens criadas. A API terá os seguintes endpoints:

POST/api-travels/travels: cria uma viagem. 

Body:

Where:

id: número único da viagem; orderNumber: número de identificação da viagem no sistema. amount: valor da transação; deve ser uma String de tamanho arbitrário que pode ser parseada como um BigDecimal; startDate: data de início da viagem no formato ISO 8601 YYYY-MM-DDThh:mm:ss.sssZ no timezone local. endDate: data de fim da viagem no formato ISO 8601 YYYY-MM-DDThh:mm:ss.sssZ no timezone local. Pode ser nulo se a viagem é só de ida. type: se a viagem é somente de ida (ONE-WAY), ida e volta (RETURN) ou múltiplos destinos (MULTI-CITY).

Deve retornar com body vazio com um dos códigos a seguir:

  • 201: caso a viagem seja criada com sucesso.
  • 400: caso o JSON seja inválido.
  • 422: se qualquer um dos campos não for parseável ou se a data de início for mais ao futuro que a data final.
  • 500: erro no servidor (são raros)

PUT/api-travels/travels/{id}: atualiza uma viagem.

Body:

Deve ser enviado o objeto que será modificado. O retorno deve ser o próprio objeto modificado.

A resposta deve conter os códigos a seguir:

  • 200: em caso de sucesso.
  • 400: caso o JSON seja inválido.
  • 404: caso tentem atualizar um registro que não existe.
  • 422: se qualquer um dos campos não for parseável (JSON mal formatado).

GET/api-travels/travels: retorna todas as viagens criadas.

Deve retornar uma lista de viagens.

A resposta deve conter os códigos a seguir:

  • 200: caso exista viagens cadastradas
  • 404: caso não exista viagens criadas.

DELETE/api-travels/travels: remove todas as viagens.

Deve aceitar uma requisição com body vazio e retornar 204.

GET/api-travels/statistics: retorna estatísticas básicas sobre as viagens criadas.

Em que: sum: um BigDecimal especificando a soma total das viagens criadas. avg: um BigDecimal especificando a média dos valores das viagens criadas. max: um BigDecimal especificando o maior valor dentre as viagens criadas. min: um BigDecimal especificando o menor valor dentre as viagens criadas. count: um long especificando o número total de viagens.

Todos os campos que são BigDecimal devem ter apenas duas casas decimais, por exemplo: 15.385 deve ser retornado como 15.39.

Testes

  • Para executar o teste unitário, o comando executado deve ser:
mvn test
  • Para executar todos os testes (incluindo o de integração), o comando executado deve ser:
mvn integration-test

Execução

Para rodar a API via .jar:

java -jar travels-api-2.0.1.jar --spring.profiles.active=dev

ou

mvn spring-boot:run -Dspring.profiles.active=dev

Por default, a API está disponível no endereço http://localhost:8080/