Perfectを使って、Swiftでサーバーサイドプログラミング2 - Hello PerfectをWebページに表示


##目次

・[Perfectを使って、Swiftでサーバーサイドプログラミング1 - 導入](http://qiita.com/s0hno/items/cbc595837a24e7523908)
・[Perfectを使って、Swiftでサーバーサイドプログラミング2 - Hello PerfectをWebページに表示](http://qiita.com/s0hno/items/ca2aa414e5951e67301a)←イマココ
・[Perfectを使って、Swiftでサーバーサイドプログラミング3 - MySQLに接続](http://qiita.com/s0hno/items/462d4aaf191039b0aa1c)


##はじめに
この記事は[HelloPerfect Part 2 - How to Build Your Web Application for Perfect Server](https://www.youtube.com/watch?v=rYV9M64pPv8)の動画を元に書いてます。

前回はWorkSpace作成したり、プロジェクトファイル追加したりと初期設定的なところが多かったですが、今回は少しコードを書いて、Webサイトに「Hello Perfect」と表示されるところまでやります。

##Framework追加とBuildSettings

HelloPerfectプロジェクトファイルを選択してGeneralタブを選択し、Linked Frameworks and LibrariesにPerfectLib.framework(OSX)を追加します。

![スクリーンショット 2016-05-18 20.44.49.png](https://qiita-image-store.s3.amazonaws.com/0/24465/ae6ed5f4-bd90-7eec-fa1b-f69fce03dc21.png "スクリーンショット 2016-05-18 20.44.49.png")

次にBuildSettingsタブを選択して、Deploymentの中のDeployment LocationをYESにします。

![スクリーンショット 2016-05-18 20.47.45.png](https://qiita-image-store.s3.amazonaws.com/0/24465/9564a087-f0cd-a504-df70-a233cf765579.png "スクリーンショット 2016-05-18 20.47.45.png")

同じくDeployment内のInstallation Build Products Locationを下記に設定

```
$(CONFIGURATION_BUILD_DIR)
```

![スクリーンショット 2016-05-18 20.52.10.png](https://qiita-image-store.s3.amazonaws.com/0/24465/ec777905-ff35-f626-6584-616d5c07f953.png "スクリーンショット 2016-05-18 20.52.10.png")

同じくDeployment内のInstallation Directoryを下記に設定

```
/PerfectLibraries
```

![スクリーンショット 2016-05-18 20.56.33.png](https://qiita-image-store.s3.amazonaws.com/0/24465/46105156-3116-9f92-8af2-d7e6faeffe5f.png "スクリーンショット 2016-05-18 20.56.33.png")

最後にDeployment内のSkip InstallをNoに設定します。

![スクリーンショット 2016-05-18 20.58.00.png](https://qiita-image-store.s3.amazonaws.com/0/24465/3629b52f-3e9c-805d-639f-ec22d7c0536d.png "スクリーンショット 2016-05-18 20.58.00.png")


##Handlerを作成

HelloPerfectフォルダ内にSwiftファイルを作成します。

![スクリーンショット 2016-05-18 21.01.50.png](https://qiita-image-store.s3.amazonaws.com/0/24465/a3a1525a-406c-c004-ecb7-6d7beec19fbd.png "スクリーンショット 2016-05-18 21.01.50.png")

ここではファイル名を「HelloPerfectHandler.swift」に。
GroupとTargetsが正しいかを確認する。

![スクリーンショット 2016-05-18 21.03.26.png](https://qiita-image-store.s3.amazonaws.com/0/24465/5415620c-bf51-1cd3-5898-9cee3cf7df2e.png "スクリーンショット 2016-05-18 21.03.26.png")

作成しましたら、HelloPerfectHandler.swiftを開いて、

```
import Foundation
import PerfectLib

public func PerfectServerModuleInit() {
    
    Routing.Handler.registerGlobally()
    Routing.Routes["GET", ["/", "index.html"]] = { (_:WebResponse) in return IndexHandler() }
    
}

class IndexHandler: RequestHandler {
    
    func handleRequest(request: WebRequest, response: WebResponse) {
        
        response.appendBodyString("Hello Perfect")
        response.requestCompletedCallback()
        
    }
    
}
```

と記述しましょう。

ここで予測変換が出なかったという人は下記のようにBuildTargetをHelloPerfectに切り替えて⌘Bで一度ビルドしましょう。

![スクリーンショット 2016-05-18 21.26.29.png](https://qiita-image-store.s3.amazonaws.com/0/24465/8c714923-e41b-9d65-e8df-0955f66a8130.png "スクリーンショット 2016-05-18 21.26.29.png")

次にHelloPerfectのEditScemeを開きます。

![スクリーンショット 2016-05-18 21.36.48.png](https://qiita-image-store.s3.amazonaws.com/0/24465/4fec004f-fc50-161d-e77d-582690e6b59f.png "スクリーンショット 2016-05-18 21.36.48.png")

Runの設定を以下のようにする。

![スクリーンショット 2016-05-18 21.38.10.png](https://qiita-image-store.s3.amazonaws.com/0/24465/47d9148b-f56a-4968-ea06-c8520a2eff2e.png "スクリーンショット 2016-05-18 21.38.10.png")

次にBuildタブを選択して、左下のプラスボタンをクリック

![スクリーンショット 2016-05-18 21.39.19.png](https://qiita-image-store.s3.amazonaws.com/0/24465/8878bd20-0418-e0f5-0589-03c13f6de35c.png "スクリーンショット 2016-05-18 21.39.19.png")

PerfectLibOSXを追加します。

![スクリーンショット 2016-05-18 21.39.30.png](https://qiita-image-store.s3.amazonaws.com/0/24465/fc8da8d7-5106-cab2-815f-8c74690e0d9b.png "スクリーンショット 2016-05-18 21.39.30.png")

##終わり

⌘Rで実行して少し待つと、

![スクリーンショット 2016-05-18 21.44.03.png](https://qiita-image-store.s3.amazonaws.com/0/24465/dc2b0115-8ba1-793b-c779-0a321c255595.png "スクリーンショット 2016-05-18 21.44.03.png")

Perfect Server HTTPのWindowが表示されますので、右下のボタンを押してwebサイトに飛ぶと、「Hello Perfect」の文字が表示されているはずです。

##Sample
・[Perfectを使って、Swiftでサーバーサイドプログラミングシリーズの
SampleCode](https://github.com/s0hno/HelloPerfect)