Slide 1

Slide 1 text

VaporͰ࢝ΊΔServer side Swift

Slide 2

Slide 2 text

ࣗݾ঺հ ே૔ ৻྄ (@asashin227) גࣜձࣾPREVENT iOSΤϯδχΞ

Slide 3

Slide 3 text

Vapor ͱ͸ Swift੡ͷ Server side framework Heroku༻ͷbuild pack΋ެ։͞Ε͍ͯΔɻ ߴύϑΥʔϚϯε1 ެࣜυΩϡϝϯτ͕ॆ࣮2 2 Vapor Dos 1 Server Side Swift vs. The Other Guys — 2: Speed

Slide 4

Slide 4 text

Install $ brew tap vapor/homebrew-tap $ brew update $ brew install vapor

Slide 5

Slide 5 text

Create a project $ vapor new [--template]

Slide 6

Slide 6 text

Options 3 Name Flag Description API --template=api JSON API with Fluent database. Web --template=web clones http://github.com/vapor/web- template --template=user/repo clones http://github.com/user/repo. --template=http://hogehgoe.com/ repo clones the full url given. --branch=foo can be used to specify a branch besides master. 3 https://docs.vapor.codes/2.0/getting-started/toolbox/#templates

Slide 7

Slide 7 text

Create sample project. $ vapor new VaporTest-API --template=api $ cd ./VaporTest-API $ vapor xcode

Slide 8

Slide 8 text

Build & Run $ vapor build $ vapor run // or Run(⌘ + R) on Xcode

Slide 9

Slide 9 text

Model final class UserModel: Model { let storage = Storage() struct Keys { static let id = "id" static let name = "name" static let age = "age" } static let idType: IdentifierType = .uuid var name: String var age: Int = 0 init(name: String, age: Int ) { self.name = name self.age = age } required init(row: Row) throws { name = try row.get(UserModel.Keys.name) age = try row.get(UserModel.Keys.age) } func makeRow() throws -> Row { var row = Row() try row.set(UserModel.Keys.name, name) try row.set(UserModel.Keys.age, age) return row } }

Slide 10

Slide 10 text

Route extension Droplet { func setupUserRoutes() throws { try resource("users", UserController.self) } }

Slide 11

Slide 11 text

Controller final class UserController: ResourceRepresentable { func makeResource() -> Resource { return Resource( index: index, store: store, show: show, update: update, replace: replace, destroy: delete, clear: clear ) } }

Slide 12

Slide 12 text

fin.