RESTとCRUD

CRUDとRESTは、API業界で最も人気のある概念のXNUMXつです。 RESTとCRUDとは何か、それらを管理する基本原則、およびそれらの類似点と相違点を学びます。

RESTとCRUD

CRUDとRESTは、アプリケーションプログラムインターフェイス(API)業界で最も人気のある概念のXNUMXつです。 RESTは、クライアントとサーバー間のHTTPプロトコルインターフェイスを標準化するために作成されたもので、WebAPIで広く使用されている設計スタイルのXNUMXつです。 一方、CRUDは、データベースアプリケーションで実行されるXNUMXつの基本的な操作を指すために使用される頭字語です。 どちらもデータベースのデータの操作に取り組んでいるため、人々がデータベース間で混乱している理由を簡単に理解できます。 このブログでは、RESTとCRUDとは何か、それらを管理する基本原則、およびそれらの類似点と相違点について説明します。

内容

RESTとは何ですか? 

RESTは、Representational StateTransferの略語です。 これは、システムがどのように相互作用するかを指示する、Web上のコンピューターの標準を提供するソフトウェアアーキテクチャスタイルです。 ロイフィールディングRESTプロトコルの創設者である、は、RESTプロトコルを「分散ハイパーメディアシステム内のアーキテクチャ要素の抽象化」と定義しています。 

RESTの簡単な歴史

2000年にRESTプロトコルがリリースされる前は、Web開発者はWeb APIを開発する方法、またはWebAPIを使用する方法についての標準を持っていませんでした。 当時は多くのプロトコルが使用されていましたが、それらは面倒で複雑すぎて実行できませんでした。 Roy Fieldingは同僚と協力してこの問題に対処しようとし、今日RESTプロトコルとして知られているものを開発しました。 RESTの開発により、XNUMX台のサーバーが世界中でデータを交換できるようになりました。 

REST準拠のシステムは RESTful システム。 これらのシステムは、ステートレスであり、クライアントとサーバーの懸念が分離されていることを特徴としています。 2000年の発売以来、 多くの会社 eBayやAmazonなどはRESTプロトコルを使用しています。 

RESTの5つの原則 

RESTには、動作するXNUMXつの基本原則があります。

1.クライアントサーバーマンデート

残り クライアントとサーバーの独立した実装を可能にします。 この独立性は、両方の当事者がお互いを知らずに、または相互作用することなく変更を加えることができることを意味します。 サーバーとクライアントが何であるかを定義することは、この原則を理解するための最初のステップです。 

  • サーバー–簡単に言うと、サーバーは他のデバイスにサービスを提供するマシンです。 がある さまざまな種類のサーバー ブートサーバー、データベースサーバー、プリントサーバー、特定のアプリケーション専用サーバーなど。 さまざまなアプリケーションが、サービスを提供するために他のアプリケーションに依存しています。 たとえば、検索エンジンは情報をWebサーバーに送信します。 対照的に、ネットワーク上のプリンターは、結果を生成するために情報をプリンターサーバーに送ります。 
  • クライアント–クライアントは、サーバーからのサービスを使用するリモートシステムです。 サーバーに接続されているすべてのマシンはクライアントと呼ばれます。 一部のクライアントはディスク容量が限られているため、機能するためにリモートファイルシステムに依存しています。 一部のデバイスは、同時にクライアントとサーバーの両方になることができます。 

RESTプロトコルを使用すると、結果に影響を与えることなく、XNUMXつのシステムを互いに独立して動作させることができます。 クライアントとサーバーがメッセージを送信するときに使用する形式を知っている限り、異なるクライアントは最終的に同じRESTエンドポイントに到達します。 クライアントインターフェイスとサーバーインターフェイスを分離することで、両方のシステムを互いに独立して進化させることもできます。 

2.無国籍

RESTful APIは、クライアント側で行われたHTTPリクエストについて何もキャッシュしません。 キャッシュしないということは、サーバーがすべてのセッションを新しいものとして扱い、サーバーに保存されている以前の情報を利用できないことを意味します。 真にあるために ステートレス、サーバーは、同じクライアントによる以前のセッションの認証の詳細を保存しません。 REST APIはステートレスであるため、サーバーがタスクを完了できるようにするには、クライアントはセッションごとに必要なすべての情報を提供する必要があります。 

3.キャッシュ可能 

サーバー上のリクエストは、さまざまな経路またはキャッシュを通過します。 これらのキャッシュは、ローカルキャッシュ、プロキシキャッシュ、またはリバースプロキシのいずれかであり、RESTful APIのサーバーは、情報をキャッシュ可能またはキャッシュ不可としてマークできます。 クライアントが終了を要求すると、この要求は一連のキャッシュを通過します。 そのパスに沿ったキャッシュに表現の新しいコピーがある場合、そのキャッシュを使用して結果を生成します。 どのキャッシュも要求を満たすことができない場合、オリジンサーバーに戻ります。 RESTful APIのサーバーは、情報がキャッシュ可能かキャッシュ不可能かを判別します。 

キャッシングにはいくつかの利点があり、そのうちのいくつかは次のとおりです。

  • 帯域幅を減らします。 
  • メモリからデータをフェッチするためのサーバーとの間のトリップ数を減らすことにより、待ち時間を短縮します。
  • サーバーの負荷を軽減します。 
  • ネットワーク障害を減らします。 

4.統一されたインターフェース 

REST APIを利用するシステムでは、クライアントとサーバーが予測どおりに相互作用します。 システム内のリソースは、XNUMXつの論理URI(Uniform Resource Identifier)のみに従います。 RESTfulAPIと非RESTAPIの違いは、デバイスやデバイスに関係なく、このインターフェイスの均一性です。 中古。 REST APIのリソースは、アプリケーションのエンジンとしてハイパーメディアを使用します 該当する場合はいつでも関連情報をフェッチする状態(HATEOAS)。 RESTful APIのすべてのリソースは、命名規則とリンク形式に関する特定のガイドラインに従います。 統一されたインターフェースは、次のXNUMXつの指針に従います。

  • リソースベース- 各リソースは、リソース識別子としてURIを使用します。
  • 表現によるリソースへのアクション- メタデータに関連付けられたリソースには、変更または削除するサーバー上の情報が含まれています。
  • 自己記述的なメッセージ- 各メッセージには、メッセージの処理方法を説明するためのすべての情報が含まれています。
  • アプリケーション状態のエンジンとしてのハイパーメディア (HATEOAS)–クライアントは本文の内容、要求ヘッダー、およびURIによって状態を提供し、サービスは応答コード、応答ヘッダー、および本文の内容によって顧客に状態を提供します。 これはハイパーメディアと呼ばれます。

5.階層化システム 

RESTful APIは、階層化されたシステムに依存して結果を提供します。 この階層化されたシステムは、レイヤーが割り当てられているレイヤーを超えて表示されないように制限する階層を提供します。 この階層化されたシステムにより、開発者は次のことが可能になります。 さまざまな機能をさまざまなサーバーに展開します。 各レイヤーは独立して機能し、各レイヤーはそれ自体以外の他のレイヤーの機能を認識しません。 ユーザー側では、階層化されたシステムでは、通常、ユーザーがプライマリサーバーに接続されているか中間サーバーに接続されているかを区別できません。 中間サーバーの重要性は、負荷分散キャッシュ共有を提供する機能です。 

CRUDとは何ですか?

CRUD は、CREATE、READ、UPDATE、および DELETE の頭字語です。 これらは XNUMX つのデータベース コマンド CRUDの基盤です。 この頭字語はプログラマーの間ではよく知られていますが、多くのソフトウェア開発者は、CRUD が API を作成するための最新の方法として作成されたものではないため、より多くのガイダンスと見なしています。 結局のところ、その起源はデータベースにあります。 その定義によれば、それは建築システムというよりもサイクルです。

多くのプログラミングプロトコルと言語では、CRUDバージョンの名前が異なり、動作がわずかに変更されています。 良い例は、挿入、選択、更新、削除を使用するSQL(構造化クエリ言語)です。. また、eコマースサイト(Amazon、Mangoなど)の購入者など、動的なWebサイトにはCRUDサイクルがあります。 ユーザーはできます 作ります アカウント、 update 情報と 削除 彼らのショッピングカートからのもの。 CRUDフレームワークを使用する他のプログラミング言語には、Java(JOOQ、iBAtis)、Phyton(Django)、PHP(Propel、Doctrine)、. NET(NHibernate、LLBLGEN Pro)などがあります。

CRUDの短い歴史

CRUDの頭字語は、構造化照会言語(SQL)で使用されるデータベース機能を説明するために1980年代に作成されたと考えられています。 この用語は1983年の本で最初に知られるようになりました データベース環境の管理 ジェームズ・マーティン著。 CRUD操作への最初の言及は、HaimKilovによる1990年の記事「セマンティックからオブジェクト指向データモデリングへ」にありました。 

CRUDサイクルは、データベースを使用して永続ストレージを強化する一連の機能として設計されました。データベースは、それを開始したプロセスよりも長持ちすることがよくあります。 最新のソフトウェアプログラミングと開発では、CRUDは機能としての当初を超えており、SQL、DDS、HTTPプロトコルなどのアプリケーションの設計原則に向いています。 

作成、読み取り、更新、削除:CRUDの原則

上で説明したように、CRUDサイクルのXNUMXつの主要な原則は、CREATE、READ、UPDATE、およびDELETEです。

  •   CREATE 関数はXNUMXつ以上のエントリを追加し、 インセット SQLの関数。
  •   お客様の声は 関数は、さまざまな基準に基づいてデータを取得し、 選択 SQLの関数。
  • UPDATE プロシージャは、上書きせずにレコードを変更および変更します。 
  •   DELETE 関数は、指定されたXNUMXつ以上のエントリを削除します。 

LとS:CRUDへの追加

CRUDが拡張されて含まれる場合があります リスティング (CRUDL)。 リストは、ページ付けを行わずに簡単なメモリストレージに保存されないより広範なデータに役立ちます。 

一部のプログラマーはCRUDにSを追加します (S残酷) for 検索。 データ取得では、更新と削除にのみ使用されますが、ソフトウェアアプリケーションのユーザーは、検索結果のリストを表示するためにデータベース内のデータを検索する必要がある場合があります。 

RESTとCRUDの類似点は何ですか?

一部の純粋主義者は、RESTとCRUDはまったく関連していないと主張するかもしれません。 ただし、使用するコマンドを詳しく調べると、XNUMXつのコマンドの類似点が明らかになります。 

RESTコマンド

  • POST–これにより、データベースに新しいレコードが作成されます。
  • GET–この要求は、データベースから供給された情報を読み取ります。
  • PUT / PATCH–これによりオブジェクトが更新されます。
  • DELETE–これにより、データベースからレコードが削除されます。

CRUDコマンド

  • CREATE–これにより、INSERTステートメントを介して新しいレコードが作成されます。 RESTでは、これはPOSTコマンドです。 
  • 読み取り/取得–これらのプロシージャーは、入力パラメーターに基づいてデータを取得します。 RESTでは、これはGETコマンドと同等です。
  • UPDATE–これにより、データが上書きされることなく更新されます。 RESTでは、これはPUTリクエストです。 
  • 消去- これにより、データベースからデータが削除されます。 RESTは同じリクエストを使用してデータを削除します。 

RESTとCRUDの違いは何ですか?

RESTとCRUDは類似しているため、同じ機能を持っていると間違えやすいです。 しかし、それは真実からはほど遠いです。 もう少し深く掘り下げると、それらの違いがわかります。 

  • RESTは、HTTPコマンドを使用するリソースとハイパーメディアを中心としたアーキテクチャシステムです。 CRUDは、データベース設定でレコードを維持することを目的としたサイクルです。。 基本形式では、CRUDは情報を操作する方法であり、アプリケーションの機能を記述します。 RESTはHTTPコマンドを介してデータを制御しています。 これは、ユーザーの情報を作成、変更、および削除する方法です。 
  • CRUD関数はRESTAPIに存在できますが、RESTAPIはCRUD関数に限定されません。 CRUDはRESTアーキテクチャ内で動作できますが、RESTAPIはCRUDとは独立して存在できます。 たとえば、REST APIを使用すると、CRUD関数に対応していなくても、クライアントがサーバーを再起動できます。 RESTは、適切なHTTPメソッドを使用している限り、これを実行できます。 
  • RESTは通常、HTTPコマンドを介してデータを使用することを指します。 これは、ユーザーが画面上のデータやサーバーに保存されている情報を操作する方法を容易にするための教義です。 プログラマーは、基本的なCRUD関数を処理できるREST APIを作成できますが、その逆は言えません。 
  • RESTとCRUDの機能は(上記で説明したように)似ていますが、同じではありません。 置く まだ存在していないリソースであっても、リソースを置き換えます。 POST 新しいリソースを追加します。 これらのコマンドは両方とも新しいリソースを作成しますが、 PUT 通常、すでに存在するリソースを更新するために使用されます。 PATCH 主にリソースの一部を更新するために使用されますが、 PUT リソース全体を置き換えて更新するためにのみ使用されます。 

RESTとCRUDは連携しますが、同じではありません

CRUDはREST環境内に存在でき、それらの機能は互いに対応していることが多いため、RESTとCRUDは連携して機能しますが、同じではありません。 それらを区別する最良の方法は、RESTが 標準 (APIアーキテクチャ)、およびCRUDは function。 この本質的であるが直接的な違いを理解することは、両方を理解するために必要です。