Swift 서버 프레임워크가 몇가지 있는데 그중에 가장 먼저 접하게 된 것이 Perfect(https://www.perfect.org) 이다. 처음에는 문서도 부족해서 자세히 알아 볼 기회가 없었다. 오늘 새로운 서버 기능을 추가하기 위해 어떤 프레임워크를 써볼까 하다 갑자기 Perfect가 떠올라 문서를 읽어 보기로 했다.
새로 프로젝트를 시작하는 것은 어려운 일이 아니다. 알고 보니 정말 간단하다. 그 간단한것을 다시 한번 정리해 본다.
Swift3 에 맞춰 Perfect 2가 출시되었다. 이 내용도 Swift3, Perfect2 에 맞춰 작성한다.
새로운 프로젝트를 생성하는 방법에는 크게 2가지가 있다.
- Template Proejct 를 받아서 수정한다. (https://www.perfect.org/docs/gettingStarted.html)
- 새로 처음부터 작성한다.
$ 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 라든지 여러 부분이 아직 지원되지 않는다.
하지만 없다고 사용 못할 수준은 아니다. 마이크로 프레임워크라고 생각하고 사용하자.
실제 프로젝트에 적용할 수 있을지 없을지... 제가 한번 해보겠습니다.
후후....
오늘 내용이 많이 도움이 되었나요?
더 자세한 내용은...
당신의 몫
'Programming' 카테고리의 다른 글
GitHub Free vs Pro (0) | 2020.07.10 |
---|---|
[Perfect] Dependency 추가 (2) | 2016.10.18 |
Firebase를 이용한 채팅 구현 (1) - 프로젝트 설정 (iOS) (0) | 2016.06.17 |
SpringBoot 시작하기 (0) | 2014.09.12 |
Install Lightblue (0) | 2014.09.11 |