このセクションでは、Vimeo APIからビデオを要求し、video_id
が有効なIDしかし、私は無効なIDを持っている場合、私は内部サーバーのエラーが表示されます。私はこのセクションで私のコードが壊れていることを知っています。私はAPIからJSONレスポンスを読み込む方法がわからないと思う。リクエストされたビデオIDがリソースと一致しないときにVimeo APIからJSON応答を処理する方法
以下は私のコードと、端末を使用して無効なIDで動画をリクエストしたときに受け取るJSON応答です。
VIMEO_REGEX = %r{(?:vimeo?\.com\/(\d+))}
def video_id
self.class.search_params(metadata)
end
def self.search_params(metadata)
return unless metadata && metadata[:url]
match_data = metadata[:url].match(VIMEO_REGEX)
match_data.try(:[], 1)
end
def self.metadata_fields
[:url]
end
protected
def validate_metadata_url
return unless errors.empty?
errors .add :metadata, 'url is not a valid vimeo url' unless metadata[:url].match(VIMEO_REGEX)
end
def validate_api_payload
validate_metadata_url
return unless errors.empty?
metadata[:payload] = JSON.parse RestClient.get(
"https://api.vimeo.com/videos/#{video_id}",
'Authorization' => 'Bearer ##################')
errors.add :metadata, 'resource not found' if metadata[:payload][:errors]
end
私が見ているコードのセクションはvalidate_api_payloadです。残りのコードはコンテキストのみです。
JSONレスポンス:
`curl -H "Authorization: Bearer ###" https://api.vimeo.com/videos/21011831o
{
"エラー": "要求されたビデオが見つかりませんでした"} `
なぜこのレスポンス私のコードを処理することはできませんか? 事前にお手数をおかけしていただきありがとうございます。
注意動画ID '21011831o:あなたがビデオ(プライベートビデオ、など)ここ
詳細情報にアクセスする権限を持っていない場合は、APIも
403 Forbidden
エラーを返すことが注意'、最後の文字は文字oです。 Vimeoビデオのurisとvideoidは常に数値です。 –
はい、私はそれを認識しています。私はビデオIDが有効でないことを知っている、私はテスト目的のためにそれをした。私は間違ったIDがユーザーによって入力されたことを処理できるようにしたい。 –
わかりました、下の私の答えを参照してください –