본문 바로가기
API-First Design

3. Swagger CodeGen CLI 는 무엇인가?

by simplify-len 2020. 10. 18.

API First Design 를 외치면서 활용했던 도구로, Swagger Codegen CLI를 활용했습니다.
해당 도구를 활용한 프로젝트 소스코드는 여기를 참조해주시면 됩니다.

Swagger Codegen CLI은 OPEN API Spec을 기반으로, Yaml 파일로 어떤 API 를 Request 하고 Response 할 지 정의를 해놓으면, Swagger Codegen CLI은 정의해놓은 Yaml 파일을 통해, 각 클라이언트에서 사용되는 통신 라이브러리를 활용해 코드를 생성해줍니다.

 이는 개발자로 하여금, 개발의 편의성을 한껏 높일 뿐만아니라, 어떤 API를 사용하고 있는지에 대해서 변경되어야 하는 부분은 유연하고, 신속하게 대응할 수 있고, 개발자가 구현해야 되는 부분은 최소화로 만들어줍니다.

이렇게 코드를 생성해줄수 있는 라이브러리로, 

  • API clients: ActionScript, Ada, Apex, Bash, C# (.net 2.0, 3.5 or later), C++ (cpprest, Qt5, Tizen), Clojure, Dart, Elixir, Elm, Eiffel, Erlang, Go, Groovy, Haskell (http-client, Servant), Java (Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured), Kotlin, Lua, Node.js (ES5, ES6, AngularJS with Google Closure Compiler annotations) Objective-C, Perl, PHP, PowerShell, Python, R, Ruby, Rust (rust, rust-server), Scala (akka, http4s, swagger-async-httpclient), Swift (2.x, 3.x, 4.x, 5.x), Typescript (Angular1.x, Angular2.x, Fetch, jQuery, Node)
  • Server stubs: Ada, C# (ASP.NET Core, NancyFx), C++ (Pistache, Restbed), Erlang, Go, Haskell (Servant), Java (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, RestEasy, Play Framework, PKMST), Kotlin, PHP (Lumen, Slim, Silex, Symfony, Zend Expressive), Python (Flask), NodeJS, Ruby (Sinatra, Rails5), Rust (rust-server), Scala (Finch, Lagom, Scalatra)

이렇게 있습니다. 대부분 저희가 사용되는 모든 프로그래밍 언어는 지원하고 있다고 생각해도 무방합니다.

그럼 간단하게 Swagger Codegen CLI를 실행하는 방법에 대해서 이야기 해보면, 저는 주로 Docker 를 활용한 실행을 좋아합니다.

SwaggerCodegen의 Github README.md가 생각보다 그렇게 깔끔하지 않고, 정신이 좀 산만하긴 한데, 필요한 부분만 잘 찾아보면 원하시는 결과물을 만들 수 있을 것입니다. 그렇지 않다면, 댓글을 남겨주시면 같이 고민해보고 답변 드리겠습니다.

먼저 Docker를 활용한 실행일 경우, 아래와 같은 입력을 합니다.

docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli generate \
    -i https://petstore.swagger.io/v2/swagger.json \
    -l go \
    -o /local/out/go

여기서 generate 뒷 부분은 모두 제거하고 Enter를 치면 swagger-codegen-cli에 대해서 좀 더 자세히 이해할 수 있습니다.

각 언어에 대한 설정이나, 정보가 필요하다면

docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli config-help -l spring

각각의 config 들은 Spring 기반의 HTTP 프로토콜을 만드는데, 도움이 됩니다. 실제로 저는 각각의 Config 를 동작시켜보고 코드를 다 뜯어봤었습니다.

 이에 대한 내용은 어떻게 Custom Swagger Codegen을 만들었는지 설명하면서 좀 더 자세하게 다루도록 하겠습니다.

오늘은 간단하게 Swagger Codegen CLI 가 무엇인지, 그리고 어떻게 실행하는지 알아보았습니다.

댓글