2017-08-09 54 views
0

我第一次尝试使用Scotty,我似乎无法让我的GET请求过去。返回的响应类型如何使用Scotty在前端显示来自HTTP GET请求的响应?

IO (Response bytestring-0.10.8.1:Data.ByteString.Lazy.Internal.ByteString) 

我知道我需要将其转换为一个类型,可以是由斯科蒂输出,但我无法弄清楚如何做到这一点。

我完整的代码:

{-# LANGUAGE DeriveGeneric  #-} 
{-# LANGUAGE OverloadedStrings #-} 
module Main where 

import   Control.Lens 
import   Control.Monad.IO.Class 
import   Data.Aeson    (FromJSON, ToJSON, Value, decode, 
             encode) 
import   Data.Map    as Map 
import   GHC.Generics 
import   Lib 
import   Network.Wreq   as Wreq 
import   Web.Scotty    as Scotty 

main :: IO() 
main = 
    scotty 3000 $ 
    Scotty.get "/" $ do 
    -- html "Hello World!" 
    Wreq.get"https://www.metaweather.com/api/location/search/?query=New%20York" 

我尝试使用LiftIO但仍然给了我一个类型错误。我想知道我应该如何转换我的Response,以便我可以在前端显示它,就像使用html显示我的初始“Hello World”一样。

回答

1

如果你只是在寻找概念的快速证据和不担心错误的反应,你可以使用responseBody镜头和发送懒字节字符串raw而不是html

main :: IO() 
main = 
    scotty 3000 $ 
    Scotty.get "/" $ do 
    r <- liftIO $ Wreq.get "https://www.metaweather.com/api/location/search/?query=New%20York" 
    raw (r ^. responseBody) 
+0

非常感谢您的回复。 但是我仍然得到这个代码的错误。 我编辑了第二行,包括LiftIO以使其正确运行。 r < - liftIO $ Wreq.get“https://www.metaweather.com/api/location/search/?query=New%20York” –

+0

有什么快速简便的方法将ByteString转换为文本? (这是我需要使用HTML而不是原始的) –

+0

Woops!我忘了'liftIO'。谢谢,我已经更新了答案 –

相关问题