[ 스위프트 ] Vapor 프레임워크 설치 및 구축

어제 처음으로 Vapor라는 프레임워크를 알게 되었습니다. 그동안 Perfect VS Vapor VS Kitura VS Node.js 같은 유사한 글들은 많이 봤어도 크게 관심은 없었습니다. 하지만 이번에 Vapor를 우연히 알게 되었고 재미있게 써보고 있습니다. 클라이언트 개발자나 iOS 개발자들은 서버에 대한 지식이 부족하기 마련입니다. 저 역시 마찬가지여서 그나마 사용하기 편리한 Express 또는 Koa로 웹 서비스를 구축합니다.

 

요즘은 타입스크립트 같은 것도 있고 Visual Studio Code 같은 것들도 있지만 전문가가 아니고서는 생각보다 디버깅하기가 힘듭니다. 스위프트는 이와 달리 매우 정교함이 있죠. 이런 우하함이 서버에 적용되면 좋을 것 같다는 생각을 매번 하다가 Vapor를 알고 새로운 세계에 빠져들었습니다. 제가 자바스크립트를 잘 다루지 못하기 때문에 그렇지 스위프트가 우월하다는 뜻은 절대 아닙니다.

 

Vapor는 사용자가 적고 NPM 생태계에 비하면 초라해서 잘 성장할 지는 모르겠지만 저는 아마 계속 사용할 것 같습니다. 그냥 연습용이라고 해도 말이죠.

 

 Vapor4 설치 

 

▼ 1. brew를 이용해서 vapor를 설치합니다. 터미널을 열고 다음 명령어를 사용합니다. [ brew install vapor ] 만약 homebrew가 설치되어 있지 않으신 분은 다음 링크로 가서 먼저 설치합니다.

brew install vapor


 

 

▼ 2. 새로운 프로젝트를 만들기 위해서 설치할 폴더로 이동한뒤에 다음 명령어를 사용해 새로운 Vapor 프로젝트를 생성합니다. [ vapor new server -n ]

  • 참고로 -n 옵션은 프로젝트가 생성될 때 묻는 질문들을 스킵하는 옵션입니다.
  • 위의 명령어를 이용해서 프로젝트를 만들면 server 라는 프로젝트가 생성됩니다.

새로운 vapor 프로젝트 생성


 

 

▼ 3. 새로운 프로젝트가 만들어지면서 물방울 모양의 텍스트가 출력됩니다. server 폴더로 이동한 뒤 다음 명령어를 통해 프로젝트를 열어줍니다. [ open Package.swift ] 직접 파인더에서 Package.swift를 더블 클릭한 뒤 Xcode로 열수도 있습니다.

새로 생성된 vapor 프로젝트 열기


 

 

▼ 4. 새로운 프로젝트가 열리고 다음과 같은 프로젝트 폴더가 구조를 볼 수 있습니다. 이중에 우선 routes.swift만 변경해도 원하는 REST API를 만들 수 있습니다. 그리고 빌드 버튼을 누르면 새로운 패키지를 받고 프로젝트가 실행됩니다.

  • Package.swift : 프로젝트 의존도 파일입니다.
  • Source/configure.swift : 프로젝트 설정 파일입니다. (포트와 호스트 등을 바꿀 수 있습니다.)
  • Source/routes.swift : 라우트 파일입니다. 
  • main.swift : 메인 파일입니다.

route.swift와 configure.swift


 

▼ 5. 이제 간단한 JSON을 리턴하는 GET 통신을 만들어보겠습니다. struct를 하나 생성하고 Content 프로토콜을 상속받습니다. 그리고 간단한 두 개의 필드를 입력합니다. 그리고 다음과 같이 프로젝트 코드를 수정합니다.

import Vapor

struct Person: Content {
    var name: String
    var age: String
}

func routes(_ app: Application) throws {
    app.get { req in
        return "It works!"
    }

    app.get("hello") { req -> String in
        return "Hello, world!"
    }
    
    app.get("users") { req -> [Person] in
        print(req)
        return [
            Person(name: "Kim", age: "12"),
            Person(name: "Seo", age: "17")
        ]
    }
}

Content 프로토콜의 JSON 객체


 

▼ 1. 이제 재생 모양의 빌드 버튼을 누르면 프로젝트가 빌드되고 하단에  [ Server starting on http://localhost:8080 ] 이라는 로그 메시지를 볼 수 있습니다.

Vapor 서버 실행


 

▼ 1. 테스트로 브라우저를 열고 [ http://localhost:8080 ] 위치로 이동해봅니다.

최상위 경로 호출 http://localhost:8080


 

▼ 1. 이제 [ http://localhost:8080/users ] URL로 이동하면 조금 전에 만들었던 JSON 구조를 반환받을 수 있습니다.

users REST API 호출


 

지금 까지 Vapor 프레임워크를 이용해서 간단한 통신 테스트를 해봤습니다. 다음에는 MongoDB를 연결해서 실제 데이터를 읽고 쓰는 방법을 알아보겠습니다. 아무래도 Xcode와 스위프트에서 지원하는 모든 디버깅 툴과 문법을 사용할 수 있어서 제게는 너무 괜찮은 프레임워크로 생각됩니다. 단 안정화 같은 문제가 조금 있어 보입니다. 안정화되고 정착돼서 많은 사람들이 사용하면 좋겠네요.

댓글

Designed by JB FACTORY