Úvod

Systém Webooker disponuje rozsáhlým programátorským rozhraním API. API je typu REST a proto ho lze velmi jednoduše používat prakticky ze všech jazyků nebo i z vašich webových stránek.

Co budete potřebovat

Pro vyzkoušení API je nejlépe použít buďto CURL popřípadě populární program Postman. Dále budete potřebovat založit v systému Webooker uživatele, kterého budete používat k přístupu do API. Pozor, nepoužívejte uživatele s příliš rozsáhlými právy, hrozí, že si rozbijete data. Doporučujeme používat buďto roli uživatel, nebo vlastní roli s omezenými právy.

První požadavek

Nejdříve zkusíme získat seznam semestrů. Bude to dotaz typu GET na adresu: https://test.webooker.eu/Api/Semesters/Get. Slovo test nahraďte názvem vašeho systému. Pro vyzkoušení rozhraní můžete použít adresu se slovem test.


curl -X GET \
  https://test.webooker.eu/Api/Semesters/Get \
  -H 'accept: application/json' \
  -H 'apipassword: g9E5c9U4' \
  -H 'apiusername: api.user' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json'


V hlavičce dotazu musí být apiusernameapipassword, kde uvedete uživatele a jeho heslo. Výsledkem dotazu bude seznam semestrů, které jsou otevřeny pro zápis ve formátu JSON:


[
    {
        "id": 21054,
        "name": "školní rok 2017/2018",
        "description": "Pokud potřebujete pomoci s výběrem kurzů, kontaktujte prosím Petru Brabcovou na tel. 728 678 089",
        "startDate": "2017-09-01T00:00:00",
        "endDate": "2018-06-29T00:00:00",
        "active": true,
        "noOfStudyWeeks": null,
        "openForRegistration": true,
        "showInAttendance": true
    },
    {
        "id": 21068,
        "name": "šk rok Ošatka 17/18",
        "description": "šk rok Ošatka 17/18",
        "startDate": "2017-09-01T00:00:00",
        "endDate": "2018-06-30T00:00:00",
        "active": false,
        "noOfStudyWeeks": null,
        "openForRegistration": true,
        "showInAttendance": true
    },
    {
        "id": 20814,
        "name": "Rok 2016/2017",
        "description": "Pokud potřebujete pomoci s výběrem kurzů, kontaktujte prosím Petru Brabcovou na tel. 728 678 089.",
        "startDate": "2016-09-01T00:00:00",
        "endDate": "2017-08-31T00:00:00",
        "active": false,
        "noOfStudyWeeks": null,
        "openForRegistration": true,
        "showInAttendance": true
    }
]


Stejný příklad v PHP


<?php

$request = new HttpRequest();
$request->setUrl('https://test.webooker.eu/Api/Semesters/Get');
$request->setMethod(HTTP_METH_GET);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'apipassword' => 'g9E5c9U4',
  'apiusername' => 'api.user',
  'accept' => 'application/json',
  'content-type' => 'application/json'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}


Stejný příklad v C#


var client = new RestClient("https://test.webooker.eu/Api/Semesters/Get");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("apipassword", "g9E5c9U4");
request.AddHeader("apiusername", "api.user");
request.AddHeader("accept", "application/json");
request.AddHeader("content-type", "application/json");
IRestResponse response = client.Execute(request);


Stejný příklad v Python (v3)


import http.client

conn = http.client.HTTPSConnection("test.webooker.eu")

headers = {
    'content-type': "application/json",
    'accept': "application/json",
    'apiusername': "api.user",
    'apipassword': "g9E5c9U4",
    'cache-control': "no-cache"
    }

conn.request("GET", "/Api/Semesters/Get", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))


Stejný příklad v JAVA


OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://test.webooker.eu/Api/Semesters/Get")
  .get()
  .addHeader("content-type", "application/json")
  .addHeader("accept", "application/json")
  .addHeader("apiusername", "api.user")
  .addHeader("apipassword", "g9E5c9U4")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();