在我的應用程序中,我有一個用戶傳遞窗體,它觸發一個API請求,然後顯示查詢結果。通過RestClient傳遞API密鑰和參數
我允許用戶選擇很多或很少的參數。我得到的問題是401授權錯誤,我相信這是因爲apikey沒有被識別(沒有密碼,用戶名需要用於api並且沒有限制)。
應用:
post '/search' do
phrase = params.fetch "phrase" #mandatory
@delimiters = ""
start_date = params.fetch "start_date"
start_date.empty? ? start_date = "" : @delimiters << "From #{start_date},"
end_date = params.fetch "end_date"
end_date.empty? ? end_date = "" : @delimiters << "To #{end_date}"
api_result = RestClient::Request.execute(method: :get, url: "capitolwords.org/api/1/text.json?phrase=#{phrase}
&page=0&apikey=",
headers: {params: {:start_date => start_date,
:end_date => end_date},
:Authorization => ENV['SUNLIGHT_API_KEY']},
timeout: 10)
end
分隔符是我使用的是趕上這樣我就可以展示他們搜索用戶傳遞的所有參數的東西。我已閱讀https://github.com/rest-client/rest-client的文檔,他們沒有提及通過API key傳遞。
這是重構過程的一部分 - 傳遞參數作爲#{@ parameter_example}的工作原理,但會使我的代碼不易讀,然後手動設置@parameter_example =「& parameter_example =#{parameter_example} 「這似乎過於冗長。
好的,我認爲這可能是正確的解決方案。目前它不能識別短語作爲參數。 – user3162553
@ user3162553你可以這樣做來解決你的問題,用127.0.0.1:8888或localhost:8888(8888只是一個隨機的端口號,使用一個適合你的)替換:url hostname,在另一個術語上運行類似於'nc -l 8888'(nc是netcat工具)。然後執行RestClient :: Request並檢查RestClient發送給netcat的請求。 – egwspiti
好吧,我發現問題 - 我只需要傳遞參數,如果不是零。它將參數傳遞給url,即使沒有任何價值,它也是&param =&param =。謝謝。 – user3162553