9

Perfect は、迅速に web/http サーバーを作成するための新しい Swift フレームワークです。ドキュメントはまだありません。新しいプロジェクトをゼロから構築するのに問題があります。どのフレームワークをインポートする必要があり、どのフレームワークがアプリのエントリ ポイントであるかがわかりません。main.swift など...

プロジェクト「Hello World サーバー」を含む新しい xcworkspace を作成したいと思います。

私が取り組もうとしている問題:

  • どのフレームワークを含める必要がありますか?
  • パーフェクト サーバーを作成するにはどうすればよいですか。アプリのエントリ ポイントは何ですか?
  • 「Hello World メッセージ」で応答する「hello」ルートを作成する方法は?
  • サーバーのターゲットを作成し、最終的にサーバーを実行するにはどうすればよいですか?
4

5 に答える 5

5

これについて「Hello World」ガイドを書くことができました。http://code-me-dirty.blogspot.co.uk/2016/02/creating-perfect-swift-server.html

一言で言えば、次のように進める必要があります。

  1. 元のプロジェクトを複製する

  2. 新しいワークスペースを作成する

  3. 新しいプロジェクトを作成する

  4. PerfectLib.xcodeproject をインポート & PerfectServer.xcodeproject をインポートしますが、コピーはしないでください

  5. プロジェクト スキームをセットアップして、PerfectServer HTTP アプリを起動します。

  6. 「リンクされたフレームワークとライブラリ」セクションで PerfectLib をリンクします。

  7. setup フレームワークターゲットのビルド設定*

  8. PerfectHandlers.swift を作成し、次のコードを貼り付けます (感覚をつかむために書いた方がよいでしょう)。

    import PerfectLib
    //public method that is being called by the server framework to initialise your module.
    public func PerfectServerModuleInit() {
    
        // Install the built-in routing handler.
        // Using this system is optional and you could install your own system if desired.
        Routing.Handler.registerGlobally()
    
        // Create Routes
        Routing.Routes["GET", ["/", "index.html"] ] = { (_:WebResponse) in return IndexHandler() }
    
        // Check the console to see the logical structure of what was installed.
        print("\(Routing.Routes.description)")
    }
    
    //Create a handler for index Route
    class IndexHandler: RequestHandler {
    
        func handleRequest(request: WebRequest, response: WebResponse) {
            response.appendBodyString("Hello World")
            response.requestCompletedCallback()
        }
    }
    

その後、実行する準備が整いました。私のブログには、これのより詳細な長いバージョンがあり、必要に応じてここで更新します。

ビルド設定

  • 展開場所: はい
  • インストール ビルド製品の場所: $(CONFIGURATION_BUILD_DIR)
  • インストール ディレクトリ : /PerfectLibraries
  • インストールをスキップ:いいえ
于 2016-02-10T12:18:08.207 に答える
4

Perfect を使用して Web サービスを作成し、それと対話するアプリを作成する方法を概説する別のソリューションとして共有したいチュートリアルを作成しました。

http://chrismanahan.com/creating-a-web-service-swift-perfect

概要

  1. プロジェクトがワークスペースにある必要があります。このワークスペースには、PerfectServer および PerfectLib プロジェクトも含まれている必要があります。

ワークスペースのスクリーンショット

  1. プロジェクトで、新しい OSX Framework ターゲットを作成します。これがサーバーターゲットになります

新しいターゲットの作成

  1. サーバー ターゲットとアプリのターゲットの両方に PerfectLib をリンクします (サーバーと一緒にアプリを構築している場合)。

  2. サーバーの実行スキームを編集して、PerfectServer HTTP アプリで起動します。

スキームを編集 実行可能スキーム

  1. サーバー ターゲットのビルド設定で、次のフラグを設定します。

    • インストールをスキップ = いいえ
    • 配置場所 = はい
    • インストール ディレクトリ = /PerfectLibraries
    • インストール ビルド製品の場所 = $(CONFIGURATION_BUILD_DIR)
  2. サーバーのフォルダーに新しいファイルを作成します。このファイルは、入ってくる要求を処理します。次の [ほとんど] を含めます。

    import PerfectLib
    
    // This function is required. The Perfect framework expects to find this function
    // to do initialization
    public func PerfectServerModuleInit() {
    
        // Install the built-in routing handler. 
        // This is required by Perfect to initialize everything
        Routing.Handler.registerGlobally()
    
        // These two routes are specific to the tutorial in the link above. 
        // This is where you would register your own endpoints. 
        // Take a look at the docs for the Routes API to better understand
        // everything you can do here
    
        // register a route for gettings posts
        Routing.Routes["GET", "/posts"] = { _ in
            return GetPostHandler()
        }
    
        // register a route for creating a new post
        Routing.Routes["POST", "/posts"] = { _ in
            return PostHandler()
        }
    }
    
    class GetPostHandler: RequestHandler {
        func handleRequest(request: WebRequest, response: WebResponse) {
            response.appendBodyString("get posts")
            response.requestCompletedCallback()
        }
    }
    
    class PostHandler: RequestHandler {
        func handleRequest(request: WebRequest, response: WebResponse) {
            response.appendBodyString("creating post")
            response.requestCompletedCallback()
        }
    }
    

サービスのさまざまな側面を構築しているときは、コマンド ラインで cURL を使用するか、 Postmanなどの他の REST テスト ツールを使用してテストできます。

より深く掘り下げて、SQLite データベースと統合する方法や、新しいサーバーと通信するアプリを作成する方法を学びたい場合は、この投稿の上部にあるチュートリアルをチェックしてください。

于 2016-02-16T00:39:26.370 に答える
0

解決策が見つかったかどうかはわかりませんが、これが私がしたことです:

「Tap Tracker」アプリは、Perfect ライブラリで作成されたアプリであるため、ドキュメントがまだ準備できていなくても、アプリを分析することができます。アプリとクラス/メソッドの名前を変更しました。単一の index.html があり、これを「www」ルートに移動し、TTHandler を使用してビューを再ルーティングして、標準のレイアウトを作成しようとしました。フレームワークが非常に若いため、うまく機能しませんが、実行できます。もっと具体的に言えば、もう少し成熟するまで待ちたいので、当分の間Railsに戻りました。

いじり回すのは楽しいですし、機能の革新が落ち着いて安定したものを作ることができたら、おそらく完璧の上に自分のライブラリを書くでしょう。

于 2016-02-08T20:14:32.903 に答える
0

サンプル プロジェクトの 1 つからすべてのファイルを git リポジトリにコピーするだけです: https://github.com/PerfectExamples

(コピーした) すべてのファイルの example_project_name の名前をプロジェクト名に変更します。

ターミナル実行中

swift package generate-xcodeproj

そして、必要な名前のパーフェクト プロジェクトを取得します。

于 2016-12-03T06:02:24.740 に答える