4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Linkbal(リンクバル)Advent Calendar 2023

Day 15

データフェッチング: 2つの一般的なアプローチの比較

Last updated at Posted at 2023-12-14

はじめに

データの取得は、どのプロジェクトにおいても不可欠な重要な技術です。データの取得方法を理解し、効果的に利用することは、ユーザーエクスペリエンスを最適化するだけでなく、アプリケーションの構築と管理の方針を形成するのにも役立ちます。本記事では、HTTPリクエストのデータ取得においてtry-catch blockdestructuring requestを使用してデータ取得処理という2つの一般的なアプローチを比較してみましょう。

try-catch block の使用

try-catch block は、伝統的なアプローチで、データ取得操作中に発生したエラーを捕捉するために使用されます。各HTTPリクエストはtryブロックで包まれ、発生したエラーはcatchブロックで処理されます。これにより、エラーを処理し、適切なアクションを実行する強力な手段が提供されます。

try {
  const response = await useFetch('example_api_end_point')
  const data = response.data
  return data
} catch (error) {
  console.error('Error when feching data:', error)
  throw error
}

destructuring request の使用:

destructuring request は、HTTPリクエストの結果からデータを抽出するための簡潔なアプローチです。包括的な try-catch ブロックの代わりに、直接 data と error の値を抽出するために destructuring 構文を使用します。これにより、コードが簡潔で読みやすくなります。

const { data, error } = await axios.get('example_api_end_point')
if (error.value) {
  console.error('Error when feching data:', error)
  throw error
}

比較

try-catch blockdestructuring request は、リクエストの処理において共通の手順に従います。具体的には、両者ともデータの取得が成功した場合とエラーが発生した場合の両方に対するデータ処理メカニズムが備わっています。しかし、それらは使用方法においてもいくつか違いがあります。

destructuring requestの使用では、エラーの処理はそのAPIからデータを取得する部分だけに限定されます。一方、try-catchでは、tryブロック全体が対象となり、そのブロック内のどこかでエラーが発生した場合、エラーは投げられます。つまり、フェッチ部分が正常に機能していても、周辺のコードからエラーが発生した場合、エラーも投げられます。

try {
  /*
    Let's say this section has an error
  */
  const response = await useFetch('example_api_end_point')
  const data = response.data
  return data
} catch (error) {
  console.error('The error occurred inside the try block:', error)
  throw error
}

 resulterror

Destructuring requestは柔軟性が高いです。dataやerrorだけでなく、より多くのプロパティを代入できます。例えば、Nuxt3のuseFetchを使って以下のようにできます。

const { data, pending, error, refresh } = await useFetch(`example_api_end_point`)
/* 
    Handling go here
    pending: a boolean indicating whether the data is still being fetched.
    refresh/execute: used to refresh the data returned by the handler function.
*/

使い方

1. Destructuring requestの使用時:

  1. シンプルな要件: 基本的なケースだけを扱い、dataとerrorを抽出するだけで十分な場合。

  2. コードが短い: シンプルなケースでは、destructuring requestを使用することでコードが短くなり、読みやすくなります。

2. try-catchの使用時:

  1. 複雑な要件: 複数のエラータイプを扱うか、エラーが発生した際に複雑なロジックを追加する必要がある場合。try-catchを使用すると柔軟にコードを拡張できます。

  2. エラー処理の調整: エラー処理の挙動を細かく制御したい場合。エラータイプに基づいて特定のアクションを実行するなど。

  3. エラーに関する明示性: エラーに関する詳細情報が必要な場合。トレースバックやカスタムエラーメッセージなど。

3. 組み合わせる場合:

両方のアプローチの利点を活かすために、両方の手法を組み合わせることができます。例えば、destructuring requestを使用して基本的なケースを処理し、より複雑な状況に対処するために周りにtry-catchを追加することができます。これにより、シンプルなケースではコードが短く保たれ、複雑な状況に対処する柔軟性も保たれます。

おわりに

以上が、destructuring request と try-catch の使い方に関する基本的な情報です。プロジェクトや開発チームの要件によって、どちらのアプローチが適しているかを選択することが重要です。シンプルなケースでは destructuring request を使用してコードを短くし、複雑な状況では try-catch を活用して柔軟なエラーハンドリングを行うことで、効果的にデータの取得を管理できるでしょう。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?