# dijkstra-backend Dijkstra is an app thas uses Dijkstra algorithm to display the shortest path between different cities in Belgium. Deployed backend: https://dijkstra-rui.herokuapp.com/ ## 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 A json object with a list of cities in the selected country `name` and `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 A json object 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 json object 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 A json object with **`start_city_id`** and **`end_city_id`**. ``` { "start_city_id": 2, "end_city_id": 9 } ``` ##### Response A json object composed of the `path` (in the correct order) 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 } ```