最近、ちょっとした身近な課題を自動化したいので、ごく小さなツールを書いています。
そのなかで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リクエストも簡単に書けそうです。
しばらくいじってみたいと思います。