GraphQL Fixer
Napraw zepsuty GraphQL SDL — brakujące dwukropki, zduplikowane pola, niezbalansowane nawiasy klamrowe
Czym jest GraphQL Fixer?
Jeśli kiedyś wkleiłeś schemat GraphQL do narzędzia i dostałeś z powrotem Syntax Error: Expected ":", found Name, albo widziałeś, jak diff w Schema Registry się sypie, bo ktoś zapomniał dwukropka po nazwie pola — znasz ten ból. SDL nie wybacza — jeden brakujący znak interpunkcyjny i cały dokument odmawia parsowania. To narzędzie naprawia typowe usterki: brakujące dwukropki po nazwach pól, zduplikowane pola wewnątrz type, niezbalansowane nawiasy klamrowe, zabłąkane przecinki, pomyłkowo wpisane referencje do skalarów. Wklej zepsuty schemat do lewego edytora, kliknij zielony przycisk Fix GraphQL!! i po prawej dostajesz czyste SDL.
Naprawa kieruje się specyfikacją GraphQL z października 2021 w zakresie gramatyki type, field i argument. Gramatyka jest mała, ale ścisła — pełen zestaw reguł znajdziesz w oficjalnym wprowadzeniu do Schemas and Types. Fixer normalizuje strukturę, nie ruszając twoich nazw pól, type ani directive, więc diff względem registry pozostaje czysty. Gdy chcesz dodatkowo zweryfikować wynik, wrzuć go do walidatora w dokumentacji schematu Apollo Server albo przepuść przez referencyjny parser z graphql-js.
Schemat trafia do małego serwisu AI z poleceniem, by naprawiał wyłącznie składnię — nigdy nie wymyślał, nie zmieniał nazw ani nie usuwał twoich pól. Naprawione SDL wraca jako zwykły tekst, gotowy do wklejenia w projekcie. Po naszej stronie nic nie jest logowane.
Jak używać GraphQL Fixer
Trzy kroki. Każdy używa rzeczywistych przycisków na tej stronie.
Wklej zepsute SDL albo wczytaj przykład
Wrzuć swój zepsuty GraphQL SDL do lewego edytora. Kliknij Przykładowy GraphQL, żeby załadować celowo zepsuty schemat Order/Customer z rodzajami usterek, z którymi to narzędzie sobie radzi — brakujące dwukropki, zduplikowane pole, brak nawiasu zamykającego.
type Order {
id: ID!
placedAt DateTime!
total Money!
}Fixer nie wymyśla pól, których nie napisałeś. Naprawia tylko składnię, którą gramatyka GraphQL odrzuca. Co do konwencji nazewnictwa i designu nakładających się na poprawną składnię — warto przejrzeć poradnik dobrych praktyk GraphQL.
Kliknij Fix GraphQL!!
Wciśnij zielony przycisk. Fixer czyta zepsuty SDL, identyfikuje błędy strukturalne i interpunkcyjne, i przepisuje dokument. W trakcie pracy pojawia się wskaźnik ładowania. Oba edytory używają podświetlenia składni SDL, więc możesz porównać przed i po obok siebie.
Skopiuj uporządkowany schemat
Prawy panel pokazuje naprawione SDL. Nazwy pól, type, opisy i directive pozostają niezmienione — naprawione są tylko błędy składni. Skopiuj wynik i wklej go do pliku schema.graphql albo do swojego registry.
Kiedy realnie tego użyjesz
Sprzątanie schematów edytowanych ręcznie
Edytowałeś duży schema.graphql ręcznie i przegapiłeś dwukropek między placedAt a DateTime!? Komunikat błędu mówi tylko "Expected :" z numerem linii. Fixer wstawia dwukropek z powrotem, bez polowania pole po polu.
Naprawa SDL wygenerowanego przez AI
Poprosiłeś LLM, żeby naszkicował schemat dla nowej funkcji, a w odpowiedzi dostałeś zduplikowane pole, przecinek tam, gdzie powinien być nawias klamrowy, i niesparowany {. Klasyczna pomyłka. Wklejasz, klikasz Fix, dostajesz parsowalny schemat bez przepisywania.
Odzyskiwanie schematów z logów
Wyciągnąłeś fragment SDL z linijki loga, gdzie był otoczony escape'ami albo pozbawiony znaków nowej linii? Fixer normalizuje strukturę, więc odzyskany schemat naprawdę znów się parsuje.
Pre-flight przed Schema Registry
Zanim wepchniesz zmianę do federowanego registry, przepuść SDL przez fixer, by wyłapać błędy interpunkcyjne, które zablokowałyby diff. Oszczędzasz sobie kolejki w registry odrzucającym upload.
Częste pytania
Jakie błędy naprawia?
Brakujące dwukropki między nazwą pola a jego typem (najczęstsza usterka), zduplikowane pola wewnątrz jednego type, brakujące lub nadmiarowe nawiasy zamykające, zabłąkane przecinki w input objects oraz niesparowane nawiasy kwadratowe wokół list types. Nie wymyśla pól, type ani argumentów — naprawia tylko składnię, którą parser odrzuca.
Czy zmienia nazwy moich pól lub typów?
Nie. Nazwy pól, skalary, type, opisy i directive przechodzą bez zmian. Fixer rusza wyłącznie strukturalną składnię — nazwy, które napisałeś, zostają dokładnie tak, jak je napisałeś.
Czy obsługuje niestandardowe skalary i directive?
Tak. scalar Money, scalar DateTime, niestandardowe directive @auth czy @deprecated — wszystko zachowane. Fixer nie sprawdza, czy niestandardowy skalar jest zarejestrowany na twoim serwerze, tylko że SDL parsuje się poprawnie.
A federowane subgraphy (Apollo Federation)?
Directive federacyjne (@key, @external, @requires) przechodzą bez zmian. Fixer to czysto warstwa naprawy składni — nie uruchamia kompozycji federacji. Później przepuść uporządkowany wynik przez krok kompozycji w swoim registry.
Czy mój schemat trafia na serwer?
Tak — naprawa działa w małym serwisie backendowym, bo to tam mieszka model językowy. Nie logujemy wejścia, a odpowiedź wraca prosto do twojej przeglądarki. Jest limit 64 KB na żądanie.
Czy zawsze wyprodukuje parsowalny schemat?
Dla typowych usterek opisanych powyżej — tak. Jeśli wejściu brakuje tak dużo struktury, że pierwotny zamiar staje się niejednoznaczny (np. cała zawartość type wycięta), wynik może zasygnalizować błąd zamiast zgadywać. W takiej sytuacji zalataj oczywistą lukę ręcznie i przepuść rezultat ponownie.
Inne narzędzia GraphQL
Naprawa to tylko fragment workflow GraphQL. Te narzędzia pokrywają resztę: