Serwer

Najpierw mock, potem walidacja prawdziwego serwera

apigenie-server serwuje odpowiedzi z Twojego kontraktu, gdy backend powstaje, a potem sprawdza ruch prawdziwego serwera względem tego samego kontraktu.

Uruchom serwer mockówCzytaj dokumentację

Mock przed backendem, proxy przed nim

Zanim backend istnieje, serwer odpowiada z kontraktu. Gdy już jest, ten sam serwer staje przed nim i sprawdza oba kierunki.

apigenie-server odpowiada z kontraktu, zanim powstanie backend, a gdy już jest, sprawdza ruch prawdziwego serwera względem tego samego kontraktuZanim powstanie backendTwój klientapigenie-server openapi.yamlodpowiada przykładami, stubami lub danymiopenapi.yamlGET /pets/42200czytaGdy już jestTwoje testyapigenie-server --proxy-towaliduje oba kierunkiPrawdziwy serwerżądanieodpowiedźprzekazaneodpowiedźX-Apigenie-Mock-Violations: 1 przy złamanej odpowiedzicontract.json, kod wyjścia 5
Ten sam plik binarny i ten sam plik w obu pozycjach. Panel pokazuje ruch w każdej z nich.

Uruchom mock ze swojego kontraktu

Wskaż serwerowi opis API. Serwuje mock i panel do przeglądania żądań, odpowiedzi i naruszeń kontraktu.

$ apigenie-server openapi.yaml
Listening on http://127.0.0.1:4010/v1 (spec: openapi.yaml, 12 operations)
Admin API: http://127.0.0.1:4010/__apigenie
Dashboard: http://127.0.0.1:4010/__apigenie/ui

Poprawna odpowiedź, złamany kontrakt

Uruchom ponownie z --proxy-to, żeby walidować ruch prawdziwego serwera. Tu serwer zwraca HTTP 200, ale id jest ciągiem znaków tam, gdzie kontrakt wymaga liczby całkowitej. Nagłówki odpowiedzi wskazują pole i niezgodność. Przy zamknięciu --report zapisuje raport, a --fail-on errors zwraca kod 5, jeśli znaleziono naruszenie o wadze błędu.

$ apigenie-server openapi.yaml --proxy-to http://localhost:8080 \
    --report contract.json --fail-on errors
$ # In another terminal, with the upstream returning {"id":"42"}:
$ curl -si http://127.0.0.1:4010/v1/pets/42 | grep -E '^HTTP|^X-Apigenie-Mock-Violations'
HTTP/1.1 200 OK
X-Apigenie-Mock-Violations: 1
X-Apigenie-Mock-Violations-Detail: [{"location":["response","body","/id"],"check":"response.body.incompatible","code":"type","severity":"error","message":"expected type integer, found string"}]

Cztery rodzaje API

  • OpenAPI i Swagger 2.0API HTTP, z zasobami CRUD przechowywanymi w magazynie dokumentów, gdy o nie poprosisz.
  • AsyncAPIKanały WebSocket, HTTP i MQTT, z wbudowanym brokerem MQTT.
  • Protobuf i gRPCUsługi z pliku .proto, obsługiwane przez stuby albo przekazywane do prawdziwego serwera.
  • GraphQLEndpoint GraphQL z GraphiQL i subskrypcjami przez WebSocket.

Co dostajesz razem z nim

Panel apigenie-server: tabela żądań do mocka z ich statusem, źródłem i naruszeniami kontraktu
  • PanelRuch na bieżąco, operacje i to, co na nie odpowiada, scenariusze, raport kontraktu i dane, w przeglądarce.
  • ScenariuszeWłączaj błędy, wolne odpowiedzi lub inne przykłady dla wybranych operacji, z konfiguracji, dokumentu lub panelu.
  • Symulacja sieciOpóźnienia, jitter i zrywane połączenia, powtarzalne dzięki ziarnu.
  • SkryptyHooki w JavaScripcie, które zmieniają żądania i odpowiedzi albo przechowują stan między nimi.
  • Kilka usługWiele dokumentów na jednym porcie, każdy pod własnym prefiksem.
  • TLS i mTLSHTTPS, WSS, gRPC i MQTT przez TLS, certyfikaty klienta i weryfikowane serwery docelowe.

Instalacja

Pakiety CLI zawierają apigenie-server, dostępny też jako obraz Dockera mykulyak/apigenie-server. Żeby wysyłać żądania testowe bez proxy, użyj apigenie test.

Zastosowania

Uruchom serwer mockówCzytaj dokumentację