# 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 } ```