Jak usunąć domyślne trasy i punkty końcowe interfejsu API REST WordPress?
Opublikowany: 2018-07-31WordPress REST API został wprowadzony do jądra w wersji 4.7 (Vaughan) w grudniu 2016 roku. Jak każda inna istotna zmiana dokonana w rdzeniu WP, była przedmiotem zażartej debaty (obecnie, lipiec 2018, Gutenberg jest przedmiotem takiej debaty/ spór). W końcu nic się nie stało. Ci, którzy nie dbali o REST API, nadal nie dbają o to. Ci, którym to zależy, wykonali kilka aplikacji, integracji, wtyczek i innych fajnych projektów.
Kiedy #wordpress REST API łączyło się z rdzeniem v4.7, ludzie wariowali! Tak samo, jak wariują, gdy zajdzie jakakolwiek zmiana. W końcu wszystko działa dobrze.
KLIKNIJ, ABY TWEETOWAĆA skoro już mowa o fajnych projektach. Czy wiesz, że te, które odnoszą największe sukcesy, zaczynają się od strony „wkrótce”? W wielu przypadkach jest to wkrótce strona, która została zbudowana przy użyciu wtyczki Coming Soon & Maintenance Mode.
Ta wtyczka jest dostarczana z kreatorem przeciągania i upuszczania, ponad 170 motywami, najlepszą w swojej klasie konfiguracją SEO, usługami autorespondera i e-maili oraz wieloma innymi funkcjami, które pozwolą Ci stworzyć idealną stronę wkrótce. Co więcej, wtyczka jest zintegrowana z Depositphotos, co oznacza, że możesz znaleźć najlepsze wizualizacje bezpośrednio z wtyczki. Ale jeśli nie jesteś fanem kolekcji, które oferuje Depositphotos, Yay Images jest również doskonałym źródłem treści stockowych.
Ale dość, wróćmy do naszego głównego tematu, REST API.
Dbamy o REST API i wykorzystujemy go podczas budowania SaaSes opartych na WP. Jest stabilny, szybki, łatwy w obsłudze, dobrze pasuje do WP iw większości przypadków jest dobrze udokumentowany. Jeśli nie wiesz, czym jest REST API, prawdopodobnie nie jest to post dla Ciebie, ale sprawdź, czym jest REST API (wideo i tekst) i być może użyjesz go w swoim następnym projekcie.
Trasa? Punkt końcowy? Czy to nie to samo?
Nie, to nie to samo. Różnica jest subtelna dla większości ludzi i używają oni terminów trasa i punkt końcowy zamiennie, ale nie jest to aż tak skomplikowane. Trasa jest mniej więcej adresem URL. Jest to „nazwa” używana do uzyskiwania dostępu do punktu końcowego. Na jednej trasie możesz mieć wiele punktów końcowych, ponieważ używany punkt końcowy zależy od używanego typu żądania HTTP. GET
, POST
, PUT
lub DELETE
mogą i zwykle służą różnym celom. Wchodząc na yoursite.com/wp-json/v2/posts/1 za pomocą GET
, otrzymasz szczegółowe informacje na temat posta o identyfikatorze #1. Użycie DELETE
na tej samej trasie wywoła inny punkt końcowy (lub funkcję, jeśli chcesz), który usuwa ten post. Oficjalny podręcznik REST API zawiera więcej informacji na ten temat, więc zajrzyj do szczegółów.
#wordpress Trasy i punkty końcowe API REST to nie to samo! Trasa to „nazwa” używana do uzyskania dostępu do punktu końcowego. Pojedyncza trasa jest zwykle powiązana z wieloma punktami końcowymi.
KLIKNIJ, ABY TWEETOWAĆDlaczego miałbym usunąć domyślne punkty końcowe lub trasy WP REST API?
Jak wspomnieliśmy w artykule o usuwaniu domyślnych reguł przepisywania – istnieje sto powodów, dla których programista WordPress miałby to zrobić.
„Dzięki temu WordPress będzie szybszy, ponieważ nie musi analizować wszystkich tych punktów końcowych”. to wciąż coś, z czym się nie zgadzam i wierzę, że zysk będzie krótszy niż milisekunda, ale to nie zaszkodzi.
Lubisz utrzymywać porządek, a skoro nie korzystasz z REST API – po co mieć trasy API? Jasne, ma sens. Ale w takim przypadku użyj wtyczki, aby całkowicie wyłączyć REST API.
I jest też powód, dla którego wyłączamy domyślne trasy (i punkty końcowe). Intensywnie używamy niestandardowych punktów końcowych API REST, ale nie potrzebujemy domyślnych. Dlatego fajnie jest zachować szczupłość i czystość. Nie może to również zaszkodzić pod względem bezpieczeństwa, ponieważ wystawiamy mniej danych na surowy świat zewnętrzny.
Pokaż domyślne punkty końcowe interfejsu API
Odwołanie do punktu końcowego jest dostępne w podręczniku REST API. Mniej więcej wszystkie dane, które są publicznie dostępne, będą również dostępne przez REST API. Przykładowe żądanie do demo.wp-api.org/wp-json/wp/v2/posts pokaże dziesięć postów w formacie JSON. Jeśli chcesz otrzymać czytelną dla człowieka wersję tej odpowiedzi, musisz zdekodować odpowiedź JSON. To samo dotyczy stron, kategorii i innych struktur danych. Struktura danych i punkty końcowe są bardzo podobne, co można zobaczyć, przeglądając odwołanie.
Innym sposobem wyświetlenia tras domyślnych jest dodanie tego kodu do pliku functions.php
motywu, a następnie otwarcie witryny yoursite.com/wp-json/. Włącz ładne linki, jeśli jeszcze tego nie zrobiłeś.
add_filter( 'rest_endpoints', 'show_default_endpoints' ); function show_default_endpoints( $endpoints ) { var_export( array_keys( $endpoints ) ); die; }
Pokazuje domyślne 31 punktów końcowych REST. Liczba ta jest oczywiście podatna na zmiany w miarę dodawania nowych podstawowych funkcji. I będzie inaczej, jeśli masz jakieś wtyczki, które dodają niestandardowe punkty końcowe.
Usuwanie domyślnych punktów końcowych
Powyższy kod wymaga minimalnej zmiany. Zwróć pustą tablicę, a wszystkie punkty końcowe znikną.
add_filter( 'rest_endpoints', 'remove_default_endpoints' ); function remove_default_endpoints( $endpoints ) { return array( ); }
„Wszystkie punkty końcowe” obejmują również niestandardowe punkty końcowe, więc mądrze jest ich nie usuwać. Oto prosty sposób na utrzymanie ich aktywności:
add_filter( 'rest_endpoints', 'remove_default_endpoints_smarter' ); function remove_default_endpoints_smarter( $endpoints ) { $prefix = 'your_custom_endpoint_prefix'; foreach ( $endpoints as $endpoint => $details ) { if ( !fnmatch( '/' . $prefix . '/*', $endpoint, FNM_CASEFOLD ) ) { unset( $endpoints[$endpoint] ); } } return $endpoints; }
Po prostu pomiń punkty końcowe z niestandardowym prefiksem i zachowaj je w tablicy. Nie zapomnij zwrócić tablicy.
Dostosowywanie prefiksu adresu URL REST
Niestandardowe punkty końcowe, mimo że są niestandardowe, używają tego samego prefiksu, co domyślne punkty końcowe. Wyglądają jak mysite.com/wp-json/custom-endpoint/. Może uważasz, że jest to brzydkie lub nie lubisz domyślnych rzeczy. Zmiana to kwestia jednej linijki kodu. W celach testowych umieść poniższy kod w pliku functions.php
motywu i po zapisaniu otwartego Dashboard – Settings – Permalinks, aby opróżnić reguły przepisywania.
add_filter( 'rest_url_prefix', 'rest_url_prefix' ); function rest_url_prefix( ) { return 'api'; }
Z filtrem powyżej punktami końcowymi będzie mysite.com/api/custom-endpoint/, a otwarcie starego adresu URL mysite.com/wp-json/custom-endpoint/ spowoduje wyświetlenie błędu 404.
Upewnij się, że zawierasz numer wersji w niestandardowych punktach końcowych, ponieważ prefiks nie jest dodawany automatycznie przez WP. Prefiks numeru wersji zapewnia, że wprowadzone zmiany nie spowodują przerwania klientów korzystających ze starych punktów końcowych. Po prostu dołącz prefiks wersji podczas wywoływania register_rest_route()
, aby uzyskać coś takiego jak mysite.com/api/v1/custom-endpoint/ i zachowaj wszystkie swoje punkty końcowe za tą „v1”, aby móc później mieć „v2” itp.
Przetestuj swoje zmiany
Usunięcie lub zmodyfikowanie tras i punktów końcowych API REST nie będzie miało żadnego znaczenia w 98% witryn WP. "Czemu?" – Bo w ogóle nie korzystają z REST API. Ale jeśli tak, upewnij się, że przetestowałeś połączone aplikacje, ponieważ, jak wszystko, zmiany mogą zepsuć sytuację. I lepiej wypatrzyć błąd dzisiaj niż jutro.