23. GET wp-json/wp/v2/posts/
GET wp-json/wp/v2/posts/128
POST wp-json/wp/v2/posts/
PUT wp-json/wp/v2/posts/128
DELETE wp-json/wp/v2/posts/128
"!
{ }
"!
!
{ }!
!
! " { }Wymaga autoryzacji Nie wymaga autoryzacji Wymaga przesłania danych JSON
31. Cookie Auth
• Standardowa metoda autoryzacji dla wtyczek i
motywów
• Wymaga przesłania w zapytaniu AJAX-owym
dodatkowego nagłówka X-WP-Nonce
http://wp-api.org/guides/authentication.html#cookie-authentication
32. Cookie Auth
• Standardowa metoda autoryzacji dla wtyczek i
motywów
• Wymaga przesłania w zapytaniu AJAX-owym
dodatkowego nagłówka X-WP-Nonce
http://v2.wp-api.org/guide/authentication/
33. OAuth
• Dla aplikacji zewnętrznych - webowych, mobilnych,
desktopowych
• Wymaga dodatkowego pluginu - OAuth Server
https://github.com/WP-API/OAuth1
• Wsparcie tylko dla OAuth 1.*
• Niestety obecnie nie ma UI do zarządzania
kluczami
34. OAuth
• Dla aplikacji zewnętrznych - webowych, mobilnych,
desktopowych
• Wymaga dodatkowego pluginu - OAuth Server
https://github.com/WP-API/OAuth1
• Wsparcie tylko dla OAuth 1.*
• Niestety obecnie nie ma UI do zarządzania
kluczami
35. OAuth
• Dla aplikacji zewnętrznych - webowych, mobilnych,
desktopowych
• Wymaga dodatkowego pluginu - OAuth Server
https://github.com/WP-API/OAuth1
• Wsparcie tylko dla OAuth 1.*
• Niestety obecnie nie ma UI do zarządzania
kluczami
36. OAuth
• Dla aplikacji zewnętrznych - webowych, mobilnych,
desktopowych
• Wymaga dodatkowego pluginu - OAuth Server
https://github.com/WP-API/OAuth1
• Wsparcie tylko dla OAuth 1.*
• Niestety obecnie nie ma UI do zarządzania
kluczami
37. Basic Auth
• Tylko do środowisk testowych, istnieje duże ryzyko
wycieku hasła wskutek braku szyfrowania
• Wymaga dodatkowej wtyczki: Basic Auth
https://github.com/WP-API/Basic-Auth
38. Basic Auth
• Tylko do środowisk testowych, istnieje duże ryzyko
wycieku hasła wskutek braku szyfrowania
• Wymaga dodatkowej wtyczki: Basic Auth
https://github.com/WP-API/Basic-Auth
41. Przestrzenie nazw
Nasz motyw lub wtyczka może korzystać z własnej
przestrzeni nazw w REST API.
Tworzenie nowych endpointów API poprzez
register_rest_route wymaga zdefiniowania przestrzeni nazw.
Domyślna przestrzeń nazw to wp/v2
42. Przestrzenie nazw
Nasz motyw lub wtyczka może korzystać z własnej
przestrzeni nazw w REST API.
Tworzenie nowych endpointów API poprzez
register_rest_route wymaga zdefiniowania przestrzeni nazw.
Domyślna przestrzeń nazw to wp/v2
43. Przestrzenie nazw
Nasz motyw lub wtyczka może korzystać z własnej
przestrzeni nazw w REST API.
Tworzenie nowych endpointów API poprzez
register_rest_route wymaga zdefiniowania przestrzeni nazw.
Domyślna przestrzeń nazw to wp/v2
45. Implementacja HAL
HAL - Hypertext Application Language
Źródło: http://stateless.co/hal_specification.html
46. Implementacja HAL
HAL - Hypertext Application Language
Wprowadza dla zasobów kolekcje _links i _embedded
Źródło: http://stateless.co/hal_specification.html
47. Implementacja HAL
HAL - Hypertext Application Language
Wprowadza dla zasobów kolekcje _links i _embedded
_links zawiera adresy powiązanych zasobów
_embedded zawiera dane powiązanych zasobów
gdy dodamy w URLu &_embed
Źródło: http://stateless.co/hal_specification.html
62. • Akcja rest_insert_post - pozwala zmodyfikować
dane przed dodaniem do bazy
• Filtr rest_prepare_{POST_TYPE} - może w
niektórych wypadkach zastąpić własne endpointy
• Akcja rest_api_init - pozwala dodawać pola i nowe
endpointy oraz np. ograniczyć zapytania do
określonej puli IP lub zarejestrowanych kluczy
63. • Akcja rest_insert_post - pozwala zmodyfikować
dane przed dodaniem do bazy
• Filtr rest_prepare_{POST_TYPE} - może w
niektórych wypadkach zastąpić własne endpointy
• Akcja rest_api_init - pozwala dodawać pola i nowe
endpointy oraz np. ograniczyć zapytania do
określonej puli IP lub zarejestrowanych kluczy
64. • Akcja rest_insert_post - pozwala zmodyfikować
dane przed dodaniem do bazy
• Filtr rest_prepare_{POST_TYPE} - może w
niektórych wypadkach zastąpić własne endpointy
• Akcja rest_api_init - pozwala dodawać pola i nowe
endpointy oraz np. ograniczyć zapytania do
określonej puli IP lub zarejestrowanych kluczy
66. Zmiana URLa REST API
Możemy zmienić URL do API (domyślnie wp-json) poprzez filtr:
rest_url_prefix
67. Podstawowe informacje o stronie
Pod adresem wp-json/ znajdują się podstawowe dane witryny:
• nazwa,
• opis,
• dostępne przestrzenie nazw,
• lista endpointów
68. Własne metody autoryzacji
• Wymagają implementacji z użyciem filtra
rest_authentication_errors
• Można zaimplementować np. JSON Web Tokens
http://jwt.io/
69. Własne metody autoryzacji
• Wymagają implementacji z użyciem filtra
rest_authentication_errors
• Można zaimplementować np. JSON Web Tokens
http://jwt.io/
70. Zmiana klasy obsługującej API
Korzystając z filtra wp_rest_server_class możemy podmienić klasę
WP_REST_Server na własną klasę
93. Inne
• Google Maps API - bo musimy mieć jakieś mapy ;)
https://developers.google.com/maps/documentation/javascript/tutorial
• LocalStorage - do przechowywania filtrów
• History API - aby mieć dostęp poprzez URL do
konkretnych miejsc
• Snazzy maps
https://snazzymaps.com/
• Travel icon set
http://www.smashingmagazine.com/2014/12/23/freebie-tourism-travel-icon-set-100-icons-
png-svg/
94. Inne
• Google Maps API - bo musimy mieć jakieś mapy ;)
https://developers.google.com/maps/documentation/javascript/tutorial
• LocalStorage - do przechowywania filtrów
• History API - aby mieć dostęp poprzez URL do
konkretnych miejsc
• Snazzy maps
https://snazzymaps.com/
• Travel icon set
http://www.smashingmagazine.com/2014/12/23/freebie-tourism-travel-icon-set-100-icons-
png-svg/
95. Inne
• Google Maps API - bo musimy mieć jakieś mapy ;)
https://developers.google.com/maps/documentation/javascript/tutorial
• LocalStorage - do przechowywania filtrów
• History API - aby mieć dostęp poprzez URL do
konkretnych miejsc
• Snazzy maps
https://snazzymaps.com/
• Travel icon set
http://www.smashingmagazine.com/2014/12/23/freebie-tourism-travel-icon-set-100-icons-
png-svg/
96. Inne
• Google Maps API - bo musimy mieć jakieś mapy ;)
https://developers.google.com/maps/documentation/javascript/tutorial
• LocalStorage - do przechowywania filtrów
• History API - aby mieć dostęp poprzez URL do
konkretnych miejsc
• Snazzy maps
https://snazzymaps.com/
• Travel icon set
http://www.smashingmagazine.com/2014/12/23/freebie-tourism-travel-icon-set-100-icons-
png-svg/
97. Inne
• Google Maps API - bo musimy mieć jakieś mapy ;)
https://developers.google.com/maps/documentation/javascript/tutorial
• LocalStorage - do przechowywania filtrów
• History API - aby mieć dostęp poprzez URL do
konkretnych miejsc
• Snazzy maps
https://snazzymaps.com/
• Travel icon set
http://www.smashingmagazine.com/2014/12/23/freebie-tourism-travel-icon-set-100-icons-
png-svg/
122. Usuwanie/modyfikowanie pól z odpowiedzi
REST API jest NIEBEZPIECZNE
Lepiej stworzyć własne zoptymalizowane endpointy
w przestrzeni nazw motywu lub dodać brakujące pola
123. W wypadku dodawana własnych pól, warto dodać im
prefiksy celem uniknięcia konfliktów z innymi wtyczkami
i motywami modyfikującymi odpowiedzi API
np. tm_geodata
124. Dodawanie danych do wpisu
function PREFIX_register_FIELD_NAME() {
register_api_field('TYPE',
‘PREFIX_FIELD_NAME',
array(
'get_callback' => 'PREFIX_get_FIELD_NAME',
'update_callback' => null,
'schema' => null
)
);
}
add_action('rest_api_init', ‘PREFIX_register_FIELD_NAME');
125. Dodawanie danych do wpisu
function PREFIX_register_FIELD_NAME() {
register_api_field('TYPE',
‘PREFIX_FIELD_NAME',
array(
'get_callback' => 'PREFIX_get_FIELD_NAME',
'update_callback' => null,
'schema' => null
)
);
}
add_action('rest_api_init', ‘PREFIX_register_FIELD_NAME');
126. Dodawanie danych do wpisu
function PREFIX_register_FIELD_NAME() {
register_api_field('TYPE',
‘PREFIX_FIELD_NAME',
array(
'get_callback' => 'PREFIX_get_FIELD_NAME',
'update_callback' => null,
'schema' => null
)
);
}
add_action('rest_api_init', ‘PREFIX_register_FIELD_NAME');
127. Dodawanie danych do wpisu
function PREFIX_register_FIELD_NAME() {
register_api_field('TYPE',
‘PREFIX_FIELD_NAME',
array(
'get_callback' => 'PREFIX_get_FIELD_NAME',
'update_callback' => null,
'schema' => null
)
);
}
add_action('rest_api_init', ‘PREFIX_register_FIELD_NAME');
128. Dodawanie danych do wpisu
function tm_register_category() {
register_api_field( 'post',
'tm_category',
array(
'get_callback' => 'tm_get_category',
'update_callback' => null,
'schema' => null
)
);
}
add_action( 'rest_api_init', 'tm_register_category');
129. function tm_get_category( $object, $field_name, $request ) {
$category_slug = null;
$categories = get_the_category($object['id']);
if(count($categories)) {
$category_slug = $categories[0]->slug;
}
return $category_slug;
}
Dodawanie danych do wpisu
133. Dla większej liczby
markerów
• Utworzenie własnych end-pointów do serwowania
danych markerów:
• ID,
• Dane geolokalizacyjne
• Kategoria
• Reszta danych wczytywana po kliknięciu popupa
poprzez wp-json/posts/<id>
134. Dla większej liczby
markerów
• Utworzenie własnych end-pointów do serwowania
danych markerów:
• ID,
• Dane geolokalizacyjne
• Kategoria
• Reszta danych wczytywana po kliknięciu popupa
poprzez wp-json/posts/<id>
135. Dla większej liczby
markerów
• Utworzenie własnych end-pointów do serwowania
danych markerów:
• ID,
• Dane geolokalizacyjne
• Kategoria
• Reszta danych wczytywana po kliknięciu popupa
poprzez wp-json/wp/v2/posts/<id>
136. Gdy mamy bardzo dużo
markerów
• Wczytywanie markerów zależnie od widocznego
obszaru mapy
• Przygotowanie end-pointu, który na bazie zakresu
szerokości i długości geograficznej zwróci listę
markerów na danym obszarze
137. Gdy mamy bardzo dużo
markerów
• Wczytywanie markerów zależnie od widocznego
obszaru mapy
• Przygotowanie endpointu, który na bazie zakresu
szerokości i długości geograficznej zwróci listę
markerów na danym obszarze
140. Podsumowanie
• REST API tworzy zupełnie nowe obszary
wykorzystania wtyczek i motywów
• REST API jest bardzo skalowalne i edytowalne
• Trzeba pamiętać, że nie tylko my będziemy
korzystać z REST API na danej instalacji WP
141. Podsumowanie
• REST API tworzy zupełnie nowe obszary
wykorzystania wtyczek i motywów
• REST API jest bardzo skalowalne i edytowalne
• Trzeba pamiętać, że nie tylko my będziemy
korzystać z REST API na danej instalacji WP
142. Podsumowanie
• REST API tworzy zupełnie nowe obszary
wykorzystania wtyczek i motywów
• REST API jest bardzo skalowalne i edytowalne
• Trzeba pamiętać, że nie tylko my będziemy
korzystać z REST API na danej instalacji WP