v01. REST API for Menze desktop application.
Menze projekt je softversko rješenje koje omogućava studentima (sveučilišta u Rijeci i drugih) pregled jelovnika studentskih restorana u realnom vremenu. Ovo je primjer moguće implementacije sustava i on nije u produkciji.
REST API se nalazi na adresi https://menzeapi.herokuapp.com/ .
Više o projektu: https://github.com/IvanoCar/menze.rest.api
Primjer klijent aplikacije administratora kuhinje: https://github.com/IvanoCar/menze.desktop
Ova verzija API omogućuje rad s korisnicima (administratori restorana), restoranima i hranom.
Za spajanje na sučelje potrebno je imati client_id i pripadajući set API ključeva koji su različiti ovisno radi li se o pregledu podataka ili uređivanju podataka. Ovi parametri se šalju kao header requesta. Obvezni headeri kod svakog request-a su:
{
"client_id": "VašID",
"api-key": "GET/EDIT ključ",
"content-type": "application/json"
}
GET: /health
vraća stanje API u formatu:
{
"status": "running",
"version": 1.1
}
Klijent može pregledavati i uređivati samo one korisnike i restorane koji mu pripadaju (po client_id)
GET: /users
POST: /users
Parametri u JSON formatu:
{
"restaurant_id": "ID",
"username": "USERNAME",
"password": "PASSWORD"
}
GET: /users/:user_id
Uređivanje podataka određenog korisnika
PUT: /users/:user_id
Parametri u JSON formatu:
{
"restaurant_id": "ID",
"username": "USERNAME",
"password": "PASSWORD"
}
DELETE: /users/:user_id
GET: /restaurants
POST: /restaurants
Parametri u JSON formatu:
{
"name": "IME",
"address": "ADRESA",
"city": "GRAD",
"postal_code": 00000
}
GET: /restaurants/:restaurant_id
Uređivanje podataka određenog restorana
PUT: /restaurants/:restaurant_id
Parametri u JSON formatu:
{
"name": "IME",
"address": "ADRESA",
"city": "GRAD",
"postal_code": 00000
}
DELETE: /restaurants/:restaurant_id
GET: /restaurants/:restaurant_id/food
PUT /restaurants/:restaurant_id/food
Hrana se mora formirati u format JSON te poslati na sljedeći način:
{
"food_data": {}
}
Dakle value vrijednost je JSON.
GET: /retaurants/multiple/:restaurant_ids
ID-evi restorana se odvajaju znakom +, npr:
GET: /retaurants/multiple/ID001+ID002+ID010
GET: /retaurants/multiple/:restaurant_ids/food
ID-evi restorana se odvajaju znakom +, npr:
GET: /retaurants/multiple/ID001+ID002+ID010/food
GET: /retaurants/multiple/:restaurant_id/analytics
Ažuriranje statistike ide na način da se automatski ažurira nakon ažuriranje hrane. Jedina statistika koja se može pregledati je koliko puta dnevno su podatci ažurirani.
Kod ažuriranja vrijednosti vraća se ažurirani objekt, u slučaju brisanja ne vraća se ništa. Status kodovi koji se vraćaju po REST standardima opisuju povratnu vrijednost.
U slučaju greške, u return vrijednosti uz pripadajući status kod dostupan je opis greške u formatu:
{
"error":"KRATAK OPIS GREŠKE",
"message": "OPIS"
}
ili u slučaju dohvaćanja više restorana ili hrane:
{
"has_errors": True,
"errors": {
"count": 2,
"restaurants": [
"ID001",
"ID005"
]
},
"results": [ {} ]
}
s tim da će uspješno dohvaćeni podati biti unutar "results" liste. Rezultati kod svakog uspješnog dohvaćanja će se enkapsulirati na način:
{
"results": [ {}, {} ]
}
Kod dohvaćanja hrane jednog restorana:
{
"results": {}
}