MyTaxiApi, which starts a webserver on port 8080 (http://localhost:8080) and serves SwaggerUI where can inspect and try existing endpoints.
The project is based on a small web service which uses the following technologies:
- Java 1.8
- Spring MVC with Spring Boot
- Database H2 (In-Memory)
- Maven
- Intellij as IDE is preferred but not mandatory.
NOTE:
- All new entities should have an ID with type of Long and a date_created with type of ZonedDateTime.
- The architecture of the web service is built with the following components:
- DataTransferObjects: Objects which are used for outside communication via the API
- Controller: Implements the processing logic of the web service, parsing of parameters and validation of in- and outputs.
- Service: Implements the business logic and handles the access to the DataAccessObjects.
- DataAccessObjects: Interface for the database. Inserts, updates, deletes and reads objects from the database.
- DomainObjects: Functional Objects which might be persisted in the database.
- TDD/BDD are good choices.
- Write a new Controller for maintaining cars (CRUD).
- Decide on your own how the methods should look like.
- Entity Car: Should have at least the following characteristics: license_plate, seat_count, convertible, averageRating, engine_type (electric, gas, ...)
- Entity Manufacturer: Decide on your own if you will use a new table or just a string column in the car table.
- Extend the DriverController to enable drivers to select a car they are driving with.
- Extend the DriverController to enable drivers to deselect a car.
- Extend the DriverDo to map the selected car to the driver.
- Add example data to resources/data.sql
First come first serve: A car can be selected by exactly one ONLINE Driver. If a second driver tries to select a already used car you should throw a CarAlreadyInUseException.
Imagine a driver management frontend that is used internally by mytaxi employees to create and edit driver related data. For a new search functionality, we need an endpoint to search for drivers. It should be possible to search for drivers by their attributes (username, online_status) as well as car characteristics (license plate, averageRating, etc).
- implement a new endpoint for searching or extend an existing one
- driver/car attributes as input parameters
- return list of drivers
The API is secured (with Spring Security) such that authentication is needed to access it.
❤️ MyTaxiAPI