goa のサービスを実装する


APIのデザインが完了し、goagen が低レベルハンドラを生成すると、次のステップは実際のアクションハンドラの実装です。

goagen はリソースごとにコントローラーのインタフェースを生成します。 また、app パッケージに MountXXXController メソッドを生成します。

コントローラをマウンティングすることで、対応するコントローラインタフェースを実装するオブジェクトのインスタンスを受け入れ、対応するメソッドで低レベルの HTTP ルータを接続します。

コントローラーオブジェクトメソッドと HTTP ルーターをバインドするコードも、アクション固有のコンテキストオブジェクトをインスタンス化します。 これらのオブジェクトはリクエストの状態をラップし、適切に型付けされた構造体フィールドを使用してこれを利用可能にします。 つまり、ハンドラコードは、コンテキストフィールドをキャストしたり、“バインド"したりする必要がありません。

コントローラメソッドは、コンテキストメソッドを使用してログをとったりレスポンスを送信することもできます。 サービス実装は、ミドルウェアを定義し、それらをサービス全体に、または特定のコントローラにマウントすることもできます。