일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 실행권한
- ftp
- appium server
- ssh
- sshpass
- STF
- openpyxl
- postgresql
- PYTHON
- insert
- 28015
- kitura
- postgres
- Jupyter
- STF_PortForwarding
- perfect
- appium
- nGrinder
- Materials
- nmap
- Jupyter Notebook
- rethinkdb
- port forwarding
- GoCD
- ubuntu
- mysql
- centos
- nohup
- SWIFT
- create table
- Today
- Total
don't stop believing
Perfect 구조 잡기 (BasicController와 API) 본문
Perfect와 PostgreSQL을 이용한 데이터 API 서버 기본 개발을 학습했는데요. 이번에는 Perfect서버의 기본 구조를 잡아보겠습니다.
이전 학습에서는 main.swift 에서 Perfect 서버 구동과 데이터 호출을 하고 dataTreat.swift에서 데이터를 불러오는 함수들을 만들었습니다.
이번엔 아래와 같이 구조를 잡아보겠습니다.
- main.swift : Perfect 서버 구동
- BasicController.swift : API 호출에 의한 request, response 처리
- WordsAPI.swift : DB 데이터 처리
- Words.swift : DB (words) 데이터 모델
먼저 기존에 없었던 BasicController.swift와 WordsAPI.swift파일을 생성하고 xcode 프로젝트 파일을 생성합니다.
$ touch Sources/BasicController.swift $ touch Sources/WordsAPI.swift $ swift package generate-xcodeproj $ open nGleServer013.xcodeproj/
xCode를 실행시키고 먼저 BasicController.swift에 아래와 같이 main.swift에 있던 Route.add() 항목들을 작성합니다.
import Foundation import PerfectLib import PerfectHTTP import PerfectHTTPServer final class BasicController { var routes: [Route] { return [ Route(method: .get, uri: "/", handler: testWord), Route(method: .get, uri: "/allData", handler: allWord), Route(method: .post, uri: "/saveNew", handler: postSaveNew), Route(method: .post, uri: "/getByID", handler: postGetByID), Route(method: .post, uri: "/findByString", handler: postFindByStringAny), Route(method: .get, uri: "/findBySelect/{searchWord}", handler: getFindBySelect), Route(method: .post, uri: "/findUpdate", handler: postFindUpdate), Route(method: .post, uri: "/findDelete", handler: postDelObjByID) ] } }
그리고 handler의 method들도 BasicController.swift로 이동합니다.
그 다음 main.swift파일은 아래와 같이 수정합니다.
BasicController 클래스를 초기화 하고 server.addRoutes()에 파라메타로 추가한 형태입니다.
import PerfectLib import PerfectHTTP import PerfectHTTPServer import StORM import PostgresStORM PostgresConnector.host = "192.168.0.6" PostgresConnector.username = "tongchun" PostgresConnector.password = "tongchun" PostgresConnector.database = "tongchun" PostgresConnector.port = 5432 let setupObj = Words() try? setupObj.setup() let server = HTTPServer() server.serverPort = 8080 let basic = BasicController() server.addRoutes(Routes(basic.routes)) do { try server.start() } catch PerfectError.networkError(let err, let msg) { print("Network error thrown: \(err) \(msg)") }
여기까지 변경하고 빌드 후 실행해 확인합니다.
$ swift build $ .build/debug/nGleServer013
WordsAPI.swift 파일에는 아래와 같이 WordsAPI 클래스를 생성해 줍니다.
WordsAPI 클래스 안의 method들은 static으로 생성해 줍니다.
import Foundation class WordsAPI { static func saveNew(word: String, means: String, example: String) throws -> Words { let obj = Words() obj.word = word obj.means = means obj.example = example do { try obj.save {id in obj.equipid = id as! Int } } catch { throw error } print("Object created with new id of \(obj.word)") return obj } }
BasicController 클래스에서 호출하는 method들을 WordsAPI 클래스의 것들로 변경합니다.
이렇게 main.swift, BasicController, WordsAPI, Words로 구분하여 구조를 잡을 수 있습니다.
'Swift > Perfect' 카테고리의 다른 글
[macaron 1] macaron api 시작하기 (0) | 2017.12.31 |
---|---|
swift4와 perfect (0) | 2017.12.26 |
Perfect + StORM + PostgreSQL 데이터 처리하기 2 (0) | 2017.10.09 |
Perfect + StORM + PostgreSQL 데이터 처리하기 1 (0) | 2017.09.28 |
Perfect + Mustache 기본 사용해 보기 (0) | 2017.09.15 |