dijkstra-backend/README.md

139 lines
3.3 KiB
Markdown

# dijkstra-backend
Find the the shortest path between different cities in Belgium with Dijkstra algorithm.
- Deployed Frontend: https://dijkstra.ruihildt.xyz/
- Deployed Backend: https://dijkstra-backend.ruihildt.xyz/
- Frontend Source: https://git.ruihildt.xyz/ruihildt/dijkstra-frontend
## API Documentation
___
> Values required in **`bold`**.
### COUNTRIES **`countries`**
| field | data type | metadata |
| :--------| :---------------- | :-------------------------------------------------- |
| id | unsigned integer | primary key, auto-increments, generated by database |
| name | string | |
#### Get a list of all cities by country id
**`GET /api/countries/:country_id`**
##### Response
An array of json objects with a list of cities in the selected country with `name`, `id` and `country_id`.
```
[
{
"id": 1,
"name": "bruges",
"country_id": 1
},
{
"id": 2,
"name": "antwerp",
"country_id": 1
},
{
"id": 3,
"name": "ghent",
"country_id": 1
},
]
```
### CITIES **`cities`**
| field | data type | metadata |
| :----------| :--------------------- | :-------------------------------------------------- |
| id | unsigned integer | primary key, auto-increments, generated by database |
| name | string | |
| country_id | unsigned integer | foreign key referencing `countries.id` |
#### Get a list of all cities
**`GET /api/cities`**
##### Response
An array of json objects with `id`, `name` and `country_id`.
```
[
{
"id": 1,
"name": 'bruges',
"country_id": 1
}
]
```
### ROADS **`roads`**
| field | data type | metadata |
| :-------------| :--------------- | :-------------------------------------------------- |
| id | unsigned integer | primary key, auto-increments, generated by database |
| start_city_id | string | required |
| end_city_id | string | required |
| distance | unsigned integer | |
#### Get roads list
**`GET /api/roads`**
##### Response
A array of json objects with `id`, `start_city_id`, 'end_city_id` and `distance`.
```
[
{
"id": 1,
"start_city_id": 1,
"end_city_id": 3,
"distance": 50
}
]
```
### Shortest Path **`cities`**
#### Get the shortest path between two cities and the total distance
**`GET /api/path`**
##### Request
Add the **`start_city_id`** and **`end_city_id`** as query strings to the url.
```
/api/path?start_city_id=2?end_city_id=9
```
##### Response
A json object composed of the `path` correctly ordered and the total `distance`.
```
{
"path": [
{
"id": 2,
"name": "antwerp"
},
{
"id": 4,
"name": "mechelen"
},
{
"id": 5,
"name": "brussels"
},
{
"id": 8,
"name": "liege"
},
{
"id": 7,
"name": "namur"
},
{
"id": 9,
"name": "arlon"
}
],
"distance": 337
}
```