case sensitiveなAPIサーバーへRubyでリクエストする時の注意
case sensitiveなAPIサーバーとは
リクエストする際のkeyの大文字小文字を区別するAPIサーバーのこと
例えば headerとして x-auth-idを付与する必要がある場合に、X-Auth-Idのようにcapitalizeして指定してリクエストしてもcase sensitiveなので受け付けてくれない、みたいな感じ
何が問題か
RFCではcase insensitiveであることを定めているため、標準ライブラリのnet/httpやfaradayのようなhttpクライアントではそれに則っていると期待していて、リクエスト送信時に内部的にX-Auth-Idのようにcamelizeして正規化し送信してしまう。
case sensitiveなAPIサーバーではそうしたリクエストを受け付けない
解決するには
APIサーバーの仕様を変更する
module Open3 (Ruby 3.2 リファレンスマニュアル)を使ってcurlを直接叩く
など
参考
curlでアクセスできるのにrubyでアクセスできない、そんな状況でもデバッグがしたい! - Qiita
Rubyのnet/httpにおけるヘッダフィールド名の大文字小文字の扱い - Qiita
https://github.com/lostisland/faraday/blob/ea30bd0b543882f1cf26e75ac4e46e0705fa7e68/lib/faraday/utils/headers.rb#L42
ruby