APIのステータスを示すWebサイトを書きました。
- endpoints.rb は、良いエンドポイントと悪いエンドポイントを含むハッシュを返します
- apiStatusWebsite.rb は endpoints.rb を使用しており、status.erb をレンダリングします
コード:
require 'sinatra'
require 'endpoints.rb'
def updateStatus
get '/status' do
endpointObject = Endpoints.new(getApiServerURL("qa"))
result = endpointObject.checkApiStatus()
erb :status, :locals => { :apiData => result}
end
end
- html コンテンツを含む status.erb
問題:
1) API は 100 秒あたり 100 のリクエストを許可します。3 人が API ステータス サイトを呼び出している場合、サーバーはユーザーごとに 45 のリクエストを API に送信します -> サーバーは 100 秒間禁止され、ステータス サイトは役に立たなくなります。
2) 問題 1 の特別なヘッダーを送信できますが、API に負荷をかけるためにステータス サイトが悪用される可能性があります (可能性は低いですが、可能性はあります)。
可能な解決策:
/status は、API のステータスを表示するだけで、呼び出していませんendpointObject.checkApiStatus()
。このチェック プロセスは、バックグラウンドで 2 分ごとに自動的に行われ、html ファイルが作成されます。この html ファイルは apiStatusWebsite2.rb からロードされます。
require 'sinatra'
get '/status' do
send_file 'status.html'
end
しかし、現在の apiStatusWebsite.rb がレンダリングするこの html ファイルを保存する方法は?