私は Faraday gem を使用して、LibreNMS API からいくつかのデータを要求しています。しかし、応答本文を表示すると、libreNMS ログインへのリダイレクト ページのような HTML コードが表示されます。
次のコードがあります (BaseService クラス):
def libre_connection
Faraday.new(url: 'https://librenms.mydomain.nl') do |conn|
conn.path_prefix = "/api/v0"
conn.response :json, :content_type => /\bjson$/, :parser_options => { :symbolize_names => true }
conn.headers['X-Auth-Token'] = Rails.application.credentials[:libre][:key]
conn.headers["Content-Type"] = "application/json"
conn.adapter Faraday.default_adapter
end
そして、これは BaseService を拡張するクラスで
def call()
response = libre_connection.get "/ports/25008.json"
end
何らかの理由で、これは次の応答を返します。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta http-equiv="refresh" content="0;url=https://librenms.mydomain.nl/login" /> <title>Redirecting to https://librenms.mydomain.nl/login</title> </head> <body> Redirecting to <a href="https://librenms.mydomain.nl/login">https://librenms.mydomain.nl/login</a>. </body> </html>
次のcurlコマンドを実行すると、期待どおりのJSON応答が得られるため、トークンが機能することはわかっています
curl -H 'X-Auth-Token: MYAPITOKEN' https://librenms.mydomain.nl/api/v0/ports/25008
誰が私が間違っているのか分かりますか?