Jednym z problemów rozwiązywanych przez standard OpenAPI oraz narzędzia, takie jak Swagger, jest brak formy opisywania API opartych o protokół HTTP zrozumianej zarówno dla człowieka, jak i maszyny.
Można powiedzieć, że pliki w standardzie OpenAPI są dla REST(ful) tym, czym plik WSDL (https://www.w3schools.com/xml/xml_wsdl.asp) był dla SOAP.
Tak jak dla WSDL, tak i dla OpenAPI istnieją narzędzia automatycznego generowania kodu klienckiego na podstawie pliku opisującego kontrakt usługi i niestosowanie ich wydaje się nieefektywne, podatne na błędy, niepodatne na automatyzacje i po prostu niezgodne z pryncypiami inżynierii oprogramowania.
Poniżej krótka instrukcja użycia przykładowego narzędzia.
NSwag
Link do pobrania https://github.com/RicoSuter/NSwag/releases - dostępny instalator, paczka ZIP z binariami.
Dostępna jest również paczka NPM https://www.npmjs.com/package/nswag.
Narzędzie można wywoływać z poziomu linii komend (duży potencjał automatyzacji, integracji z CI/CD), z poziomu przystawki GUI NSwagStudio (https://github.com/RicoSuter/NSwag/wiki/NSwagStudio) lub w sposób łączony polegający na generowaniu konfiguracji z poziomu NSwagStudio, a następnie wywoływaniu linii narzędzia komend zasilonego konfiguracją przygotowaną w narzędziu GUI.
Przykładowy kod wywołania narzędzia nswag generujący plik z klientem .NET dla API Petshop (z przykładu Swagger Editora).
nswag openapi2csclient /input:https://petstore.swagger.io/v2/swagger.json /classname:SwaggerTestClient /namespace:Neuca.Swagger.ClientTest /output:SwaggerTestClient.cs
Opis parametrów: https://github.com/RicoSuter/NSwag/wiki/CommandLine.
Efektem wywołania jest utworzenie w pliku SwaggerTestClient.cs klasy SwaggerTestClient implementującej wszystkie metody kontraktu oraz wszystkich typów przyjmowanych i zwracanych przez te metody, według schematów zadeklarowanych w kontrakcie.

Możliwe jest również generowanie kodu klienckiego dla TypeScript:
nswag openapi2tsclient /input:https://petstore.swagger.io/v2/swagger.json /output:PetstoreClient.ts /template:Angular

Więcej informacji o użyciu NSwag z Angular na blogu autora narzędzia: https://blog.rsuter.com/nswag-tutorial-generate-an-angular-2-typescript-client-from-an-existing-asp-net-web-api-web-assembly/