我是第一次尝试Scotty,我似乎无法摆脱提出GET请求。响应作为类型返回
IO (Response bytestring-0.10.8.1:Data.ByteString.Lazy.Internal.ByteString)
我知道我需要将其转换为 Scotty 可以输出的类型,但我不知道该怎么做。
我的完整代码是:
{-# 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,但这仍然给我一个类型错误。我想知道我应该如何转换我的响应,以便我可以在前端显示它,就像我用 html 显示我最初的"Hello World"一样。
如果您只是在寻找快速的概念证明并且不担心错误的响应,则可以使用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)