2017-03-28 5 views
0

このセクションでは、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 

{
"エラー": "要求されたビデオが見つかりませんでした"} `

なぜこのレスポンス私のコードを処理することはできませんか? 事前にお手数をおかけしていただきありがとうございます。

+0

注意動画ID '21011831o:あなたがビデオ(プライベートビデオ、など)ここ

詳細情報にアクセスする権限を持っていない場合は、APIも403 Forbiddenエラーを返すことが

注意'、最後の文字は文字oです。 Vimeoビデオのurisとvideoidは常に数値です。 –

+0

はい、私はそれを認識しています。私はビデオIDが有効でないことを知っている、私はテスト目的のためにそれをした。私は間違ったIDがユーザーによって入力されたことを処理できるようにしたい。 –

+0

わかりました、下の私の答えを参照してください –

答えて

1

あなたのコードは正しく動作していると思います。ビデオIDが有効でない場合、Vimeo APIは404ステータスコードを返信し、"The requested video could not be found"というコードを説明したとおりに本体に返します。

私は、あなたが「内部サービスエラー」として404というを間違えていると思います。 APIに内部サービスエラーがあった場合、500/5xxエラーが発生します。 https://developer.vimeo.com/api/endpoints/videos

+0

ありがとう@トミー。それは理にかなっている。私は、404ではなく、500を持っていますが、なぜそれが問題なのか分かります。もう一つ質問があります。ご覧のように、 'metadata [:payload]'はJSONレスポンスを受け取ります。問題は私が404を取得するとき、コードがそこに壊れていることです。この404を処理/受信してアプリをクラッシュさせないようにするにはどうすればよいですか?メタデータは、親ファイル内のハッシュとして定義されています –

+0

あなたが遭遇した500件を解決したいと思います。あなたが持っているすべての詳細をvimeoに送信して、修正することができます! – Dashron

関連する問題