kotlin

ktor #1

theno0s 2023. 5. 7. 18:52

* 해당 포스트의 목적

    > Ktor를 사용해 본다. 끝.

 

거창한 이유는 없고, 일단 해보고 나서 장단을 비교하는게 맞을것 같다.

 

 

- Ktor로 웹 만들어보기

 

1. 시작하기

    공식 사이트에서 제공하는 문서 위주로 일단 따라가 보기로 한다. (https://ktor.io/

    공식사이트 기준에 따르면 Ktor를 시작하는 방법은 크게 3가지로 제공이 된다.

 

        * 인텔리제이에서 생성

        * https://start.ktor.io 에서 프로젝트 세팅. (spring.io와 같은 듯 하다)

        * 그 외 code editor를 이용해 설정. (직접 gradle/ maven 빌드 세팅)

    

    이 중 에서 나는 인텔리 제이로 생성을 시도한다. 있으니까.

 

2. 프로젝트의 생성

    인텔리제이에서 프로젝트 생성 메뉴로 시도.

    생성 메뉴에서 'Ktor'를 찾아서 필요한 값을 넣어준다.

        * Name : 해당 프로젝트의 이름(명칭). 일반적으로 프로젝트의 디렉토리(폴더)의 이름이 된다.

        * Location : 해당 프로젝트의 로컬(사용중인 PC)의 위치. 해당 위치의 하위에 Name으로 디렉토리가 생성된다.

        * Build system : 사용할 빌드 툴. jvm기반이어서 그런지 spring 처럼 gradle과 maven중 하나로 기본 제공된다.
                                 (저기서 나는 예시에서 처럼 kotlin 기반 gradle 을 적용했다.)

    그 외 옵션들은 공식 사이트에서 설명이 나와 있으므로,

    대충 필요에 따라서 사용하면 될 듯 하다. 엔진은 기본으로 Netty로 제공되는 것이 흠터레스팅.

 

    플러그인 적용. 사실 spring에서의 의존성(dependency) 라이브러리와 같은 역할 인것 같다. 용어가 다를 뿐. 

    찾아보니 인증, JWT토큰, db connection등 기본적인 기능들은 있는 듯 하나, jpa와 같은 플러그인은 확인되지 않았다.

   

    이번에는 공식문서에서 Routing만 설정한다고 나와서 똑같이 적용했다.

    그리고 create 버튼 클릭.

 

    그러면 초기 gradle 프로젝트 세팅처럼 필요한 외부 라이브러리를 받기 위해 잠시 시간이 소요 된다. (download ~)

    BUILD SUCCESSFUL 메시지 나오면 성공.

 

3. Hello World!

    위에서 만든 프로젝트를 보면

   

    이런 구조로 프로젝트가 생성된다.

    테스트 코드도 있고, 일단 gradle 사용해본 사람이면 대충 이거 이거겠구나 하는 구조로 나온다.

 

    각 파일들을 보면

        * Application.kt : main function이 존재하는 메인 클래스. 

                                      enbeddedServer 함수로 실행 되는 프로젝트의 웹컨테이너, 포트, ip, 모듈등의 설정이 가능한 것으로 보임.

                                      (각각의 내용은 추가적으로 확인 해 볼 예정)

                                      하단의 Application.module 의 함수의 configureRouting()은 routing플러그인에서 사용된 함수로

                                      해당 클래스에 위치한 plugins > Routing.kt에서 구현 된다.

     

        * Routing.kt

       

    실행은 main() 함수를 실행하고, main 함수에 지정한 host/port를 치고 들어가면 hello world 가 웹페이지에 나타나게 된다.

    (캡처 귀찮..)

 

일단 ktor에서 기본적인 프로젝트 세팅과 함께 개발자들의 입문테스트인 hello world의 실행까지 진행을 해봤다.

아직 해당 프레임워크가 익숙하지 않은 지라, 공식 문서를 보고 따라한게 전부였다.

다음에는 api를 구현하는 방법에 대해서 공식 문서를 보고 따라한 기록을 적을 예정이다.