サーチ…


サーバント

Servantは、タイプレベルでAPIを宣言し、次に:

  • (サーバントのこの部分はWebフレームワークと見なすことができます)
  • クライアント関数を取得する(haskellで)、
  • 他のプログラミング言語用のクライアント関数を生成し、
  • Webアプリケーションのドキュメントを生成する
  • もっと...

Servantには簡潔で強力なAPIがあります。簡単なAPIは、ほんの数行のコードで書くことができます:

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}

import Data.Text
import Data.Aeson.Types
import GHC.Generics
import Servant.API

data SortBy = Age | Name

data User = User {
  name :: String,
  age :: Int
} deriving (Eq, Show, Generic)

instance ToJSON User  -- automatically convert User to JSON

APIを宣言できます:

type UserAPI = "users" :> QueryParam "sortby" SortBy :> Get '[JSON] [User]

これは私たちが公開したいと述べている/usersするGETクエリのparamと要求sortbyタイプのSortByし、型のJSONを返すUser応答を。

これでハンドラを定義できます:

-- This is where we'd return our user data, or e.g. do a database lookup
server :: Server UserAPI
server = return [User "Alex" 31]

userAPI :: Proxy UserAPI
userAPI = Proxy

app1 :: Application
app1 = serve userAPI server

また、ポート8081でリッスンし、ユーザーAPIを提供する主な方法は次のとおりです。

main :: IO ()
main = run 8081 app1

スタックには、Servantで基本APIを生成するためのテンプレートがあります。これは、非常に迅速に起動して実行するのに便利です。

Yesod

Yesodプロジェクトは、次のテンプレートを使用してstack newで作成できます。

  • yesod-minimal 。最も簡単なYesod足場が可能です。
  • yesod-mongo 。 MongoDBをDBエンジンとして使用します。
  • yesod-mysql 。 MySQLをDBエンジンとして使用します。
  • yesod-postgres PostgreSQLをDBエンジンとして使用します。
  • yesod-postgres-fay 。 PostgreSQLをDBエンジンとして使用します。フロントエンドにFay言語を使用します。
  • yesod-simple 。データベースが必要ない場合は、使用する推奨テンプレート。
  • yesod-sqlite 。 DBエンジンとしてSQliteを使用します。

yesod-binパッケージは、開発サーバーを実行するために使用できるyesod実行可能ファイルを提供します。アプリケーションを直接実行することもできますので、 yesodツールはオプションです。

Application.hsは、ハンドラー間で要求をディスパッチするコードが含まれています。また、データベースとロギング設定を使用している場合は設定します。

Foundation.hsは、すべてのハンドラの環境と見ることができるAppタイプを定義します。 HandlerTモナドでは、 getYesod関数を使ってこの値を得ることができます。

Import.hsは、一般的に使用されているものを再エクスポートするモジュールです。

Model.hsは、DB相互作用に使用されるコードとデータ型を生成するTemplate Haskellが含まれています。 DBを使用している場合のみ表示されます。

config/modelsは、DBスキーマを定義する場所です。 Model.hs使用されModel.hs

config/routesは、WebアプリケーションのURIを定義します。ルートの各HTTPメソッドに対して、 {method}{RouteR}という名前のハンドラを作成する必要があります。

static/ディレクトリには、サイトの静的リソースが含まれています。これらは、 Settings/StaticFiles.hsモジュールによってバイナリにコンパイルされます。

templates/ディレクトリには、要求を処理するときに使用されるShakespeareテンプレートが含まれています。

最後に、 Handler/ディレクトリには、ルートのハンドラを定義するモジュールが含まれています。

各ハンドラはIOに基づくHandlerTモナドアクションです。リクエストパラメータ、ボディとその他の情報をrunDBrunDBでDBにクエリを行い、任意のIOを実行し、様々なタイプのコンテンツをユーザに返すことができます。 HTMLを提供するために、 defaultLayoutテンプレートのきれいな合成を可能にするdefaultLayout関数が使用されます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow