APIのエラーをいかに捌くか
APIのエラーを表現する時にclassかexceptionかenumか迷っていたのでメモ。
APIと通信すると正常系と異常系の処理について考える必要がある。 さらに異常系は2種類あり APIとの通信は成功しているがパラメーター過不足などのAPIのエラー URLが存在しない、回線不調などの通信系のエラーが考えられる。
APIがエラーを返す場合 TwitterAPIを例にみてみよう
https://developer.twitter.com/en/docs/basics/response-codes
{"errors":[{"message":"Sorry, that page does not exist","code":34}]}
複数のエラーを表現するためErrorsという配列に入っているようだ。 アプリ層でもこのcodeとmessageを扱いとする。
その条件でエラーを表現する時 Exception or Class or Enumの選択があるが Enumは変数を持てないので,messagesやcodeを再現できない。 Exceptionも同様(messageにjson入れることは出来るが無理やりなのでNG) となるとAPIのエラーはClassで再現するのが適していそう。
そして通信系のエラーはExceptionか。
次回は同じリクエストが別のjsonを返すケースについて考えてみる。
[所要時間:15分]