Witam
Dodaliśmy do Sejmometru REST API. Narazie nie podajemy informacji o tym na stronie, bo chciałem Was poprosić o opinię, co do samej filozofii działania. Oto jak to działa:
Pod adresy URL Sejmometru, pod którymi wyświetlane są strony HTML, można wysyłać żądania HTTP z odpowiednimi nagłówkami Accept. W tej chwili akceptowane są dwie wartości:
application/vnd.EPF_API.v1+xml (jeśli chcemy otrzymać dane w XML),
application/vnd.EPF_API.v1+json (jeśli chcemy otrzymać dane w JSON),
(dla każdej innej wartości, serwer zwróci stronę HTML).
Oto przykład w PHP:
$opts = array(
'http'=>array(
'method' => "GET",
'header' => array("Accept: application/vnd.EPF_API.v1+xml"),
),
);
$context = stream_context_create( $opts );
$url = '
http://sejmometr.pl/gminy';
$transport = file_get_contents( $url, null, $context );
var_dump( $transport );
Odpowiedź z REST API jest dokumentem, z określonym polem "resource". To pole może być równe "ep_Dataset" lub "ep_Object".
Przykład 1Jeśli chcemy przeglądać zbiór aktów prawnych, to należy wysyłać żądania pod adres:
http://sejmometr.pl/prawoW odpowiedzi dostaniemy dokument typu "ep_Dataset". Dla zasobów tego typu, możemy dodatkowo kierować parametry GET:
p - numer strony wyników (domyślnie: 1)
pp - liczba wyników na stronę (każdy dataset ma swoją domyślną wartość, najczęściej 20)
w - pozwala filtrować wyniki. musi być tablicą conajmniej 3 elementów: ['nazwa_pola', 'operator', 'wartosc']. Dozwolone operatory: =, <, >, <=, >=, LIKE, 'IN_LAST_MONTHS'
o - pozwala sortować wyniki. musi być tablicą conajmniej 2 elementów: ['nazwa_pola', 'kierunek']. Dozwolone kierunki: ASC, DESC
k - dodatkowy filtr wyników. tablica fraz do szukania w datasecie. Dla większości datasetów miałomto być wyszukiwanie pełnotekstowe. Dla niektórych (np kody pocztowe) jest to wyszukiwanie "proste". ten filtr nie działa obecnie tak jak powinien. pracujemy nad tym.
Przykład 2Jeżeli znamy id obiektu, którego dane chcemy uzyskać, to należy wysłać odpowiednie żądanie pod adres URL Sejmometru. Np jeśli chcemy uzyskać informacje o gminie, której id=100, to wysyłamy żądanie pod
http://sejmometr.pl/gminy/100.
W odpowiedzi dostaniemy zasób typu "ep_Object". Docelowo pod adresy obiektów będzie można wysyłać parametry GET, które umożliwią załadowanie dodatkowych warstw obiektu. Np w przypadku gmin, dodatkową warstwą może być zbiór punktów będących granicą geodezyjną gminy, wyniki wyborów itp. Pracujemy nad tym?
Proszę o opinię, czy tak może być i czy możemy iść dalej z takim systemem.
W tej chwili REST API jest dostępne bez żadnych ograniczeń. Docelowo chcielibyśmy, aby mogli z niego korzystać tylko osoby, które mają konto w Sejmometrze. Czy OAuth2 będzie dobrym systemem zarządzania dostępem przez tokeny?
Pozdrawiam
Daniel Macyszyn