Tworzenie API
Tworzenie APITworzenie niestandardowego endpointu

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

Edytor niestandardowego endpointu

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:

Niestandardowe endpointy w panelu administracyjnym
Niestandardowe endpointy w panelu administracyjnym

Tworzenie nowego niestandardowego endpointu

Kliknij przycisk "Add New GraphQL endpoint", aby otworzyć edytor WordPress:

Tworzenie nowego niestandardowego endpointu

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":

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):

Wybieranie konfiguracji schematu

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.

Prywatny niestandardowy endpoint

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.

Niestandardowy endpoint chroniony hasłem

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:

Niestandardowy endpoint chroniony hasłem: Pierwszy dostęp

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

Niestandardowy endpoint chroniony hasłem: Po autoryzacji

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 niestandardowego endpointu

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

Link do klienta GraphiQL niestandardowego endpointu w edytorze

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

Link do klienta GraphiQL niestandardowego endpointu na liście
Link do klienta GraphiQL niestandardowego endpointu na liście

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 Voyager niestandardowego endpointu

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

Link do klienta Interactive Schema niestandardowego endpointu w edytorze

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

Link do klienta Interactive Schema niestandardowego endpointu na liście
Link do klienta Interactive Schema niestandardowego endpointu na liście

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):

Źródło niestandardowego endpointu


Konfiguracja w edytorze WordPress

Poniżej znajdują się pola w treści edytora:

PoleOpis
TytułTytuł niestandardowego endpointu
Konfiguracja schematuZ listy rozwijanej wybierz konfigurację schematu stosowaną do niestandardowego endpointu lub jedną z poniższych opcji:
  • "Default": konfiguracja schematu jest tą wybraną w ustawieniach wtyczki
  • "None": niestandardowy endpoint nie będzie niczym ograniczony
  • "Inherit from parent": używa tej samej konfiguracji schematu co nadrzędny niestandardowy endpoint.
    Ta opcja jest dostępna, gdy moduł "API Hierarchy" jest włączony, a niestandardowy endpoint ma nadrzędną query (wybraną w ustawieniach dokumentu)
OpcjeDostosowuje zachowanie niestandardowego endpointu:
  • Enabled?: Czy niestandardowy endpoint jest włączony.
    Przydatne jest wyłączenie niestandardowego endpointu, gdy jest on nadrzędną query w hierarchii API
  • Expose GraphiQL client?: Włącza/wyłącza dołączanie klienta GraphiQL do endpointu, dostępnego pod adresem ?view=graphiql
  • Expose the Interactive Schema client?: Włącza/wyłącza dołączanie klienta Interactive Schema do endpointu, dostępnego pod adresem ?view=schema
  • Inherit query from ancestor(s)?: Używa tej samej query co nadrzędny niestandardowy endpoint.
    Ta opcja jest dostępna, gdy moduł "API Hierarchy" jest włączony, a niestandardowy endpoint ma nadrzędną query (wybraną w ustawieniach dokumentu)

Poniżej znajdują się pola w ustawieniach dokumentu:

PoleOpis
PermalinkAdres, pod którym niestandardowy endpoint będzie dostępny
KategorieUmożliwia kategoryzację niestandardowego endpointu.
Np.: mobile, app itd.
ExcerptDostarcza opis niestandardowego endpointu.
To pole jest dostępne, gdy moduł "Excerpt as Description" jest włączony
Atrybuty stronyWybiera nadrzędny niestandardowy endpoint.
To pole jest dostępne, gdy moduł "API Hierarchy" jest włączony