GithubHelp home page GithubHelp logo

mariazevedo88 / travels-api Goto Github PK

View Code? Open in Web Editor NEW
29.0 3.0 28.0 64 KB

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

License: MIT License

Java 100.00%
java java11 java-11 api api-service api-restful rest-api rest restful-api medium-article http http-rest-api

travels-api's Introduction

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:

{ "id": 1, "orderNumber": "220788", "amount": "22.88", "startDate": "2019-09-11T09:59:51.312Z", "endDate": "2019-09-21T21:05:06.500Z", "type": "RETURN" }

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:

{ "orderNumber": "220788", "amount": "50.50", "startDate": "2019-09-11T09:59:51.312Z", "endDate": "2019-09-21T21:05:06.500Z", "type": "RETURN" }

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

{ "id": 1, "orderNumber": "220788", "amount": "50.50", "startDate": "2019-09-11T09:59:51.312Z", "endDate": "2019-09-21T21:05:06.500Z", "type": "RETURN" }

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.

{ "id": 1, "orderCode": "220788", "amount": "22.88", "initialDate": "2019-09-11T09:59:51.312Z", "finalDate": "2019-09-21T21:05:06.500Z", "type": "RETURN" }, { "id": 2, "orderCode": "300691", "amount": "120.0", "initialDate": "2019–10–25T16:18:30.541Z", "type": "ONE-WAY" }

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.

{ "sum": "142.88", "avg": "71.44", "max": "120.0", "min": "22.88", "count": "2" }

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/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.