FSharp.Dataライブラリをさわる

Webプログラムのイメージ

最近、ちょっとした身近な課題を自動化したいので、ごく小さなツールを書いています。

そのなかでHTTP POSTなリクエストを送信する必要があったため、いくつかのライブラリを試してみています。

.NET Coreの標準ライブラリでもある程度の要求をカバーできそうだったのですが、FSharp.Dataというライブラリが便利そうだったので、それを触ってみようと思います。

新しいF#のプロジェクトを作る

dotnet new console -lang F#

適当なディレクトリに移動した後、dotnet newコマンドを使ってコンソールプロジェクトを作っておきます。

そこから次のコマンドで必要なパッケージを追加します。

dotnet add package Fsharp.Data

これで準備が整ったので、このブログのトップページを取得するコードを書いてみます。

open FSharp.Data
let html = Http.RequestString("https://10nin.vivaldi.net/")
printfn $"{html}"

FSharp.Data.HttpにはHTTPリクエストを送るのに便利なメソッドが収録されているので、それを使います。

非同期通信するためには、RequestStringと同様のAsyncRequestStringが用意されているので、こちらを使います。

open FSharp.Data

let access =
    task {
        let! html = Http.AsyncRequestString("https://10nin.vivaldi.net/")
        printfn $"{html}"
    }

printfn $"{access.Wait()}"

ナルホド。良さそうな感じです。

AsyncRequestStringとRequestStringで出来ることは同じようなので、アプリケーションの要件に合わせて使い分ければ良さそうですね。

FSharp.Data.Httpのリファレンスはここにあって、RequestStringにbody等のパラメータを渡してやれば、FormDataを送信するようなPOSTリクエストも簡単に書けそうです。

しばらくいじってみたいと思います。