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.
- Prace nad klientem zaczynają się przed backendemMock serwuje przykłady z kontraktu, stuby lub wygenerowane dane i waliduje każde żądanie. Zespoły front endu i klientów pracują przeciwko niemu.
- Twoje istniejące testy stają się testami kontraktowymiSkierowane na walidujące proxy, sprawdzają każde żądanie i odpowiedź względem kontraktu, z pokryciem i raportami JSON lub JUnit dla CI.
- Testy integracyjne bez działających usługNagraj sesję raz i odtwarzaj jej wymiany po kolei. Testy działają na nagraniu zamiast na prawdziwych usługach.
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.
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/uiPoprawna 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

- 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.