を使用Cohttp_asyncしてリクエストを実行する場合、HTTP レスポンス コード 302 (Temporary Redirect) を次の方法で処理しています。
let rec download uri =
Cohttp_async.Client.get uri
>>= fun (response, body) ->
let http_code = Cohttp.Code.code_of_status (Cohttp.Response.status response) in
if Cohttp.Code.is_redirection http_code then
(* Code to handle the redirect *)
else Cohttp_async.Body.to_string body
これは問題なく動作するようです (少なくとも、私が使用している単純なケースでは)。私は主に、これを行うためのより良い方法があるかどうかを知りたいと思っています。on のマッチングなど、これを処理するためのより良い方法があると思いますCohttp.Code.status。何かのようなもの:
match http_code with
| Ok -> Cohttp_async.Body.to_string body
| Temporary_redirect -> (* Code to handle the redirect *)
| _ -> (* Failure here, possibly *)
これまでのところ、適切なコンストラクターと一致していないように見えるため、これにはあまり運がありませんでした。
副次的な質問として、Cohttp には応答の一部として返される HTTP リダイレクトを処理するためのより良い方法がありますか? 多分私がこれについて行っている方法は間違っていて、もっと簡単な方法があります。