【发布时间】:2016-08-02 17:22:41
【问题描述】:
我如何将莎士比亚(来自 yesod)用于服务 Web 服务 API?
我试试:
type TestAPI
= "tests" :> Get '[JSON] [Test]
:<|> "Test.html" :> Get '[HTML] Html
serverTestAPI :: ServerT TestAPI AppM
serverTestAPI = tests
:<|> test
:<|> testHtml
tests :: AppM [Test]
tests = do return [ Test 1 "Test 1"
, Test 2 "Test 2"
]
testHtml = [hamlet|
$doctype 5
.........
|]
但我得到了错误!
【问题讨论】:
-
显示哪个错误?
-
查看
shakespeare的文档,看起来hamletQQ 产生了HtmlUrl类型的东西,但shamlet产生了Html类型的东西。使用shamlet代替hamlet有效吗? -
显示错误:无法将类型 't0 -> 标记'与 'transformers-0.4.2.0:Control.Monad.Trans.Reader.ReaderT Config (Control.Monad.Trans.Either. EitherT ServantErr IO) (blaze-markup-0.7.0.3:Text.Blaze.Internal.MarkupM ())' 预期类型:ServerT TestAPI AppM 实际类型:AppM [Test] : (AppM Test : (t0 -> Markup)) 在表达式中:tests : test : testHtml 在 'serverTestAPI' 的等式中: serverTestAPI = tests : test : testHtml
-
小村庄和小村庄不起作用!
-
我建议将签名添加到
testHtml(可能是testHtml :: HTML) - 然后你的错误应该指向你的小村庄部分