#Swiftでサーバー作ってみよう
##初期設定
Vaporのdocはこちら
###必須
Xcodeインストール(こちらでダウンロード:https://developer.apple.com/download/)
Vaporインストール
私homebrew
使っているので下記の手順でインストールできる
% brew tap vapor/homebrew-tap
% brew update
% brew install vapor
##Hello World
1. セットアップ済みの状態で下記ターミナルでvapor new ______
実行
% vapor new hello --template=api
Cloning Template [Done]
Updating Package Name [Done]
Initializing git repository [Done]
**
**~~**
**~~~~~~**
**~~~~~~~~~~**
**~~~~~~~~~~~~~~**
**~~~~~~~~~~~~~~~~~~**
**~~~~~~~~~~~~~~~~~~~~~~**
**~~~~~~~~~~~~~~~~~~~~~~~~**
**~~~~~~~~~~~~~~~~~~~~~~~~~~**
**~~~~~~~~~~~~~~~~~~~~~~~~~~~~**
**~~~~~~~~~~~~~~~~~~~~~~~~~~~~**
**~~~~~~~~~~~~~~~~~~~~~++++~~~**
**~~~~~~~~~~~~~~~~~~~++++~~~**
***~~~~~~~~~~~~~~~++++~~~***
****~~~~~~~~~~++++~~****
*****~~~~~~~~~*****
*************
_ __ ___ ___ ___
\ \ / / /\ | |_) / / \ | |_)
\_\/ /_/--\ |_| \_\_/ |_| \
a web framework for Swift
Project "hello" has been created.
Type `cd hello` to enter the project directory.
Enjoy!
2. Xcodeで全部やりたい時は下記のコマンド実行
% vapor xcode
Generating Xcode Project [Done]
Select the `Run` scheme to run.
Open Xcode project?
y/n> y
Opening Xcode project...
iOS/OSX開発慣れている人がこれ一番楽と思います。
普通のText editor/Terminalでいけるけど。
3. 次中身見ましょう。Routes.swift開きます。
import Vapor
extension Droplet {
func setupRoutes() throws {
get("hello") { req in
var json = JSON()
try json.set("hello", "world")
return json
}
get("plaintext") { req in
return "Hello, world!"
}
// response to requests to /info domain
// with a description of the request
get("info") { req in
return req.description
}
get("description") { req in return req.description }
try resource("posts", PostController.self)
}
}
###Dropletって何?
DropletはVaporの機能アクセスできるサービスコンテーナーです。仕事はルート登録、サバー起動、middleware追加、など。
Routes.swiftでAPIルーティング行うべき場所です。
とりあえずそのままにしよう。
4. アプリbuildとrun実行しましょう
% vapor build
Building Project [Done]
% vapor run
Running hello ...
The current hash key "0000000000000000" is not secure.
Update hash.key in Config/crypto.json before using in production.
Use `openssl rand -base64 <length>` to generate a random string.
The current cipher key "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" is not secure.
Update cipher.key in Config/crypto.json before using in production.
Use `openssl rand -base64 32` to generate a random string.
Database prepared
No command supplied, defaulting to serve...
Starting server on 0.0.0.0:8080
現状四つのURL使って見ましょう
0.0.0.0:8080/plaintext
ただのplaintextファイル見れる今はHello, world!
0.0.0.0:8080/hello
こちらがJSONの形で返ってくる
0.0.0.0:8080/info & 0.0.0.0:8080/description
こちらの二つ同じ結果になるんですがRequestの詳細出してくれる
##References
https://docs.vapor.codes/2.0/getting-started/hello-world/
https://docs.vapor.codes/2.0/getting-started/toolbox/
https://vapor.github.io/documentation/
http://www.appcoda.com/server-side-swift-vapor/