ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Perfect] 프로젝트 생성하기
    Programming/Backend 2016. 10. 15. 21:12

    Swift 서버 프레임워크가 몇가지 있는데 그중에 가장 먼저 접하게 된 것이 Perfect(https://www.perfect.org) 이다. 처음에는 문서도 부족해서 자세히 알아 볼 기회가 없었다. 오늘 새로운 서버 기능을 추가하기 위해 어떤 프레임워크를 써볼까 하다 갑자기 Perfect가 떠올라 문서를 읽어 보기로 했다.


    새로 프로젝트를 시작하는 것은 어려운 일이 아니다. 알고 보니 정말 간단하다. 그 간단한것을 다시 한번  정리해 본다.


    Swift3 에 맞춰 Perfect 2가 출시되었다. 이 내용도 Swift3, Perfect2 에 맞춰 작성한다.


    새로운 프로젝트를 생성하는 방법에는 크게 2가지가 있다.

    두가지 방법도 해보았지만 그래도 역시 처음은 새로 작성하는 것이 좋다고 생각한다. 그래서 그 방법에 따라 작성한다.

    프로젝트 폴더를 생성한다. 

    $ mkdir FirstPerfectProject
    $ cd FirstPerfectProject
    


    Package.swift 파일을 생성한다.

    $ vi Package.swift

    다음 코드를 붙여 넣는다.

    import PackageDescription
     
    let package = Package(
        name: "FirstPerfectProject",
        dependencies: [
            .Package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", majorVersion: 2, minor: 0)
        ]
    )
    

    name 은 프로젝트 이름이며 빌드 후 생성되는 실행파일 명이다.


    dependencies 는 다른 라이브러리를 추가하는 부분이다. 아직 예제에 나온 라이브러리들만 추가해 봤음. gradle, cocoapods 를 사용해봤다면 낯설지 않은 부분이다.


    이제 소스 파일을 작성할 폴더를 만들고 간단한 코드를 작성해 보자.

    $ mkdir Sources
    $ echo 'print("Well hi there!")' >> Sources/main.swift
    

    이제 실행 가능한 조건은 모두 충족되었다. 이제 실행을 해보자.

    $ swift build
    $ .build/debug/MyAwesomeProject
    

    swift build 를 통해서 프로젝트를 빌드한다. 빌드를 하게 되면 .build 폴더가 생기며 실행 파일은 package 의 name으로 생성된다.

    빌드를 하면 dependecies 에 설정된 git에서 소스 파일들을 다운로드 받아서 빌드를 하게 된다. 빌드가성공하면 실행해 보자.

    $ .build/debug/FirstPerfectProject
    Well hi there!
    

    실행이 되었다. 그런데 이건 REST 가 아니네? 물론 테스트를 위한 코드입니다.

    이제 REST 를 테스트해보자.  main.swift를 다시 수정하자.

    $ vi Sources/main.swift

    기존 코드는 지우고 다음 코드를 붙여넣는다. 

    import PerfectLib
    import PerfectHTTP
    import PerfectHTTPServer
     
    // Create HTTP server.
    let server = HTTPServer()
     
    // Register your own routes and handlers
    var routes = Routes()
    routes.add(method: .get, uri: "/", handler: {
            request, response in
            response.setHeader(.contentType, value: "text/html")
            response.appendBody(string: "Hello, world!Hello, world!</body></html>")
            response.completed()
        }
    )
     
    // Add the routes to the server.
    server.addRoutes(routes)
     
    // Set a listen port of 8181
    server.serverPort = 8181
     
    do {
        // Launch the HTTP server.
        try server.start()
    } catch PerfectError.networkError(let err, let msg) {
        print("Network error thrown: \(err) \(msg)")
    }
    

    1초만에 코드를 다 작성했으니 이제 빌드를 해보자.

    $ swift build
    $ .build/debug/FirstPerfectProject
    [INFO] Starting HTTP server on 0.0.0.0:8181 with document root ./webroot
    

    오..! 서버가 실행됐다! localhost:8181 로 접속해 보자.



    오.... 코드에 나와 있는 대로 uri 가 / 일때  Hello, world! 가 출력됐다.



    이제 문서를 더 읽고 제대로 만들어 보자!!


    https://www.perfect.org/docs/handlingRequests.html


    https://github.com/PerfectlySoft/Perfect


    문서 내용을 다 읽는데 많은 시간이 걸리지 않는다. 2~3시간이면 모든 내용을 읽을 수 있다.


    아직 초기 단계라 아쉬운 부분이 많이 있다. ORM, auth 라든지 여러 부분이 아직 지원되지 않는다.


    하지만 없다고 사용 못할 수준은 아니다. 마이크로 프레임워크라고 생각하고 사용하자.


    실제 프로젝트에 적용할 수 있을지 없을지... 제가 한번 해보겠습니다.


    후후....



    오늘 내용이 많이 도움이 되었나요? 

    더 자세한 내용은...


    당신의 몫



    댓글 1

Designed by Tistory.