2017-08-09 81 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'。謝謝,我已經更新了答案 –

相關問題