2017-08-09 8 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を使用してみましたが、それはまだ私のタイプエラーを与えています。私は最初の "Hello World"をhtmlで表示したのと同じように、自分のレスポンスをどのように変換してフロントエンドに表示できるかを知りたかったのです。

答えて

1

あなただけのコンセプトの迅速な証拠を探していると誤った応答を心配していないしている場合、あなたはresponseBodyレンズを使用し、代わりにhtmlrawに怠惰なバイト文字列を送信することができます:

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

あなたの返事をありがとう。 しかし、私はまだこのコードでエラーが発生していました。 2番目の最後の行を編集してLiftIOを含め、正しく実行させるようにしました。 r < - liftIO $ Wreq.get "https://www.metaweather.com/api/location/search/?query=New%20York" –

+0

ByteStringをテキストに変換するためのすばやく簡単な方法はありますか? (これは、私は生の代わりにHTMLを使用する必要があります) –

+0

Woops!私は 'liftIO'を忘れました。ありがとう、私は答えを更新しました –

関連する問題