Tworzenie niestandardowego endpointu
Oprócz pojedynczego endpointu, Gato GraphQL obsługuje również niestandardowe endpointy, umożliwiające pobieranie i publikowanie danych dla niestandardowego schematu (zawierającego tylko podzbiór dostępnych typów) oraz reguł walidacji użytkowników, aby sprostać potrzebom różnych użytkowników i aplikacji.
Możemy tworzyć dowolną liczbę niestandardowych endpointów.
Na przykład możemy utworzyć niestandardowy endpoint dla:
- Konkretnego klienta lub użytkownika, pod adresem
/graphql/my-client/ - Grupy użytkowników z szerszym dostępem do funkcji (takich jak użytkownicy PRO), pod adresem
/graphql/pro-users/ - Dostarczania danych do naszej aplikacji mobilnej, pod adresem
/graphql/mobile-app/ - Udostępniania zewnętrznego API, pod adresem
/graphql/external-api/ - Innych przypadków

Wykonywanie niestandardowego endpointu w aplikacji
Postępuj zgodnie z instrukcjami w przewodniku Łączenie z serwerem GraphQL z poziomu klienta.
Dostęp do wszystkich niestandardowych endpointów
Klikając "Custom Endpoints" w menu wtyczki, wyświetlana jest lista wszystkich utworzonych niestandardowych endpointów:

Tworzenie nowego niestandardowego endpointu
Kliknij przycisk "Add New GraphQL endpoint", aby otworzyć edytor WordPress:

Nadaj tytuł, upewnij się, że permalink jest właściwy, wybierz konfigurację schematu i dostosuj opcje. Gdy będziesz gotowy, kliknij przycisk Publish, a niestandardowy endpoint zostanie utworzony z użyciem skonfigurowanego permalinku jako adresu URL endpointu.
Linki do endpointu (oraz do źródła i klientów) są wyświetlane w panelu bocznym "Custom Endpoint Overview":

Konfiguracja schematu
Zdefiniowanie, jakie elementy zawiera schemat i jaki dostęp będą mieli do niego użytkownicy, odbywa się w konfiguracji schematu.
Dlatego musimy utworzyć konfigurację schematu, a następnie wybrać ją z listy rozwijanej (lub nie używać żadnej, lub użyć domyślnej):

Prywatne endpointy
Ustawiając status niestandardowego endpointu jako private, endpoint jest dostępny tylko dla użytkownika administratora. Zapobiega to niezamierzonemu udostępnieniu naszych danych użytkownikom, którzy nie powinni mieć do nich dostępu.
Na przykład możemy tworzyć prywatne niestandardowe endpointy wspomagające zarządzanie aplikacją, takie jak pobieranie danych do tworzenia raportów z naszymi metrykami.

Endpointy chronione hasłem
Jeśli tworzymy niestandardowy endpoint dla konkretnego klienta, możemy przypisać do niego hasło, aby zapewnić dodatkowy poziom bezpieczeństwa i zagwarantować, że tylko ten klient będzie miał dostęp do endpointu.

Przy pierwszym dostępie do endpointu chronionego hasłem (niezależnie od tego, czy użytkownik otwiera sam endpoint, czy jego klientów GraphiQL lub Interactive Schema), wyświetlany jest ekran z prośbą o podanie hasła:

Po podaniu i zweryfikowaniu hasła użytkownik uzyska dostęp do żądanego endpointu lub klienta:

Tworzenie hierarchii endpointów
Przeczytaj instrukcje dotyczące tworzenia hierarchii API.
Wyłączanie niestandardowego endpointu
W opcjach ustaw "Enabled" na false, aby wyłączyć niestandardowy endpoint.
Ta funkcja może być przydatna, gdy niestandardowy endpoint jest częścią hierarchii API, aby zapewnić wspólne zachowanie jego podrzędnym niestandardowym endpointom, bez konieczności samodzielnego wykonywania.
Opisywanie niestandardowego endpointu
Użyj pola "Excerpt" w panelu ustawień dokumentu, aby nadać opis niestandardowemu endpointowi.
Więcej informacji znajdziesz w przewodniku Dodawanie opisu do API.
Klienci endpointu
Każdy niestandardowy endpoint ma własny zestaw klientów do interakcji.
Klient GraphiQL
Dodaj ?view=graphiql do endpointu, aby uzyskać dostęp do jego klienta GraphiQL:

Klient GraphiQL można również otworzyć podczas edytowania niestandardowego endpointu, w panelu bocznym "Custom Endpoint Overview":

Podobnie klient można otworzyć ze strony listy niestandardowych endpointów, klikając link "GraphiQL" po najechaniu kursorem na wpis:

Aby wyłączyć klienta GraphiQL, ustaw opcję "Expose GraphiQL client?" na false w edytorze niestandardowego endpointu.
Klient Interactive Schema (Voyager)
Dodaj ?view=schema do endpointu, aby uzyskać dostęp do jego klienta Interactive Schema, służącego do wizualizacji i interakcji ze schematem endpointu:

Klient Interactive Schema można również otworzyć podczas edytowania niestandardowego endpointu, w panelu bocznym "Custom Endpoint Overview":

Podobnie klient można otworzyć ze strony listy niestandardowych endpointów, klikając link "Interactive Schema" po najechaniu kursorem na wpis:

Aby wyłączyć klienta Interactive Schema, ustaw opcję "Expose the Interactive Schema client?" na false w edytorze niestandardowego endpointu.
Testowanie endpointu przed publikacją online
Niestandardowy endpoint ze statusem draft lub pending jest dostępny wyłącznie dla użytkowników edytujących schemat. Daje im to możliwość:
- Wykonywania queries GraphQL względem niego
- Dostępu do klientów GraphiQL i Voyager endpointu
Następnie możemy utworzyć niestandardowy endpoint, przypisać konfigurację schematu, opublikować go jako draft lub pending i przetestować (np. sprawdzić, czy jego reguły kontroli dostępu są odpowiednie).
Po zatwierdzeniu dopiero wtedy ustawiamy jego status jako publish, udostępniając niestandardowy endpoint wszystkim.
Wyświetlanie źródła
Dodając ?view=source do endpointu, wyświetlana jest konfiguracja endpointu (o ile użytkownik jest zalogowany i jego rola ma do niej dostęp):

Konfiguracja w edytorze WordPress
Poniżej znajdują się pola w treści edytora:
| Pole | Opis |
|---|---|
| Tytuł | Tytuł niestandardowego endpointu |
| Konfiguracja schematu | Z listy rozwijanej wybierz konfigurację schematu stosowaną do niestandardowego endpointu lub jedną z poniższych opcji:
|
| Opcje | Dostosowuje zachowanie niestandardowego endpointu:
|
Poniżej znajdują się pola w ustawieniach dokumentu:
| Pole | Opis |
|---|---|
| Permalink | Adres, pod którym niestandardowy endpoint będzie dostępny |
| Kategorie | Umożliwia kategoryzację niestandardowego endpointu. Np.: mobile, app itd. |
| Excerpt | Dostarcza opis niestandardowego endpointu. To pole jest dostępne, gdy moduł "Excerpt as Description" jest włączony |
| Atrybuty strony | Wybiera nadrzędny niestandardowy endpoint. To pole jest dostępne, gdy moduł "API Hierarchy" jest włączony |