ByteString
をクライアント(ブラウザ)に中継しようとしています。クライアントは要求されているドキュメントのコンテンツタイプを知らないので、クライアントに適切なコンテンツタイプの応答を返そうとしています。文書は、画像またはpdfまたはワード文書などであってもよい。サーバントで一般的なコンテンツタイプを送信する
例えば、クライアントは/document?id=55
を要求し、サーバは適切なコンテンツタイプおよび関連するByteString
で応答する。
私は例hereに従っており、画像用に何かを作成しました。
data IMAGE
instance Accept IMAGE where
contentType _ = "image" M.// "jpeg"
instance MimeRender IMAGE LBS.ByteString where
mimeRender _ = id
課題は、それがhereに行われているように私には、適切なMIMEタイプと反応する方法がないので、クライアントはいくつかの特定のAccept:
ヘッダでリクエストを送信することはありませんです。さらに、上記の画像は、pdf
、docx
などではなく、ブラウザではpng
を返信してもjpeg
を返信すると仮定しています)。
私はMyDynamicContent String
ようparamaterizedタイプについて考えて、私は、実行時にコンテンツタイプを渡しますが、私はつまり、私は'[JSON]
の代わりに何を使用する私のAPIを宣言しますかわかりません。例が単なる単純なデータ型であるため、このようなことも可能ではありません。
だから私の質問は、私は応答として、いくつかのByteString
を送信し、動的にContent-Type
ヘッダーを設定したい場合は、何がservant
更新使用してそれを行うための最善の方法となります、である:私はissueを開いたを
どのようなコンテンツタイプで応答するかはサーバーがどのように決定しますか? (特に、これを静的に確定することはできません) – user2141650
@ user2141650: 'server'はデータストア(文書ストアサービス)からこの情報を取得します。それはサービスへの呼び出しを行い、サービスはcontent-typeとバイト文字列で応答します。私は、各コンテンツタイプ(またはほとんどは少なくとも使用されるもの)のエンドポイントを作成し、まずコンテンツタイプを送信してから、コンテンツタイプに対応するエンドポイントを使用するようにクライアントに依頼することができます。これはそのような悪いハックであり、このロジックをクライアントに多く移しています。私はそれがサーバーによってうまく処理されるべきだと感じています。 – Ecognium