An app using Dijkstra algorithm to find the shortest path between different cities.
https://dijkstra-backend.ruihildt.xyz
api | ||
data | ||
helpers | ||
.gitignore | ||
index.js | ||
knexfile.js | ||
package-lock.json | ||
package.json | ||
README.md |
dijkstra-backend
Find the the shortest path between different cities in Belgium with Dijkstra algorithm.
-
Frontend: https://dijkstra.ruihildt.xyz/
-
Frontend Source: https://github.com/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 countries list
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 cities list
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_idand
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
}