rust: ureqでHTTPエラーとbodyを取得
目次
最終更新日:2025/11/22
JSON-RPC というか REST というかで通信しようとしている。
結局 tokio-rs/axum を使うことにした。
クライアントの方は algesten/ureq を使う。
axum 側は anyhow-response-error や custom-extractor-error を参考に タプルの形でステータスコードと JSON を返すようにした。
ureq の方を error-handling で処理してみると、 ステータスコードは取れるのだが JSON の方が取って来れない。
どうやってもうまく行かなかったので、もう deepwiki にお頼みした。
ポイントは ureq::post() などで直接やるのではなく ureq::Agent を使い、
.http_status_as_error(false) でエラーがあっても継続する?ようにするそうだ。
$ ./target/debug/cli error
status code: 500 Internal Server Error
{
"from": "anyhow error happen",
"message": "not success"
}
writer: hiro99ma