2

Servant docsには、次の API があります。

type API = "position" :> Capture "x" Int :> Capture "y" Int :> Get '[JSON] Position
      :<|> "hello" :> QueryParam "name" String :> Get '[JSON] HelloMessage
      :<|> "marketing" :> ReqBody '[JSON] ClientInfo :> Post '[JSON] Email

クライアント関数を次のように定義できます。

api :: Proxy API
api = Proxy

position :<|> hello :<|> marketing = client api

代わりに、API タイプが次のようになったとします。

type API = QueryParam "test" Int :> (
    "position" :> Capture "x" Int :> Capture "y" Int :> Get '[JSON] Position
      :<|> "hello" :> QueryParam "name" String :> Get '[JSON] HelloMessage
      :<|> "marketing" :> ReqBody '[JSON] ClientInfo :> Post '[JSON] Email)

これは元の API と同じですが、すべてのエンドポイントに「テスト」クエリ パラメータが追加されています。クライアント関数を取得するにはどうすればよいでしょうか。パターンマッチングのいくつかのバリエーションを試しましたが、役に立ちませんでした。

他のすべてが失敗した場合、各エンドポイントの API タイプで「test」クエリ パラメータを繰り返すことができますが、これは Haskell であるため、繰り返しを避けるようにしています。

4

1 に答える 1