APIとフロントエンドバックエンドの区別


22

「標準」のビジネスWebサイトを作成しようとしています。「標準」とは、このサイトが通常のHTML5、CSS、およびフロントエンド、バックエンド(ものを処理するため)用のJavaScriptを実行し、データベース用にMySQLを実行することを意味します。これは基本的なCRUDサイトです。フロントエンドは、データベースに保存されているものを何でも作成します。バックエンドは、ユーザーが入力したものをデータベースに書き込み、処理を行います。ほとんどのサイトと同じように。

コーディングを開始するためにGithubリポジトリを作成する際、フロントエンドバックエンドAPIの違いを理解していないことに気付きました。私の質問を言い換える別の方法は次のとおりです。APIはこの図のどこに来ますか?

私はいくつかの詳細と私が持っている質問をリストします-これがあなたに私の実際の質問が何であるかをよりよく理解してくれることを願っています。私は尋ねる特定の質問を知らないので混乱しています

いくつかの詳細:

  • Model-View-Controllerパターンを試してみたい。これにより質問/回答が変更されるかどうかはわかりません。
  • APIはRESTfulになります
  • 私は私の希望私自身のAPIを使用するバックエンドをカンニングして、特別なクエリを呼び出すためにバックエンドを可能するのではなく。このスタイルはより一貫していると思います。

私の質問:

  • フロントエンドは、APIを呼び出すバックエンドを呼び出しますか?または、フロントエンドはバックエンドを呼び出すのではなく、APIを呼び出すだけですか?
  • バックエンドはAPIを実行するだけで、APIはバックエンド(バックエンドが究極のコントローラーとして機能し、タスクを委任する)に制御を返しますか?

フロントエンドバックエンドとともにAPIの役割を説明する長く詳細な回答が推奨されます。答えがプログラミングのモデル(Model-View-Controllerパターン以外のモデル)に依存する場合、APIのこれらの他の考え方を説明してください。ありがとう。私はとても混乱しています。

回答:


24

APIという用語が多くのWeb開発者によって誤用され、悪用されている方法に混乱していると思います。

  • APIとは、アプリケーションプログラミングインターフェイス、つまり異なるシステム(または同じシステムの一部)間の公式に指定されたインターフェイスを意味します。
  • 少し前に、WebスタートアップにとってWebサービスAPIを介して内部データの一部にパブリックアクセスを提供することが一般的になりました。通常、RESTとJSONを使用して、サードパーティの開発者がシステムと統合できるようにします。Web開発者は、「API」という用語を「公的にアクセス可能なWebサービス」を具体的かつ唯一の意味で使用し始め、その実装を含めるために誤用し始めました。
  • フロントエンドとバックエンドに関して、このWebサービスAPI(およびその実装)バックエンドです。その一部は公開されており、他の部分はフロントエンドのみがアクセスできます。
  • これの別の名前は「サービス層」、つまりコード
    • フロントエンドが呼び出すサービスを表します
    • 表示ロジックが含まれていません(結局、フロントエンドの仕事です)
    • は、単純なCRUDアクションよりも抽象的で粗いものです(1つのサービス呼び出しには、多くの場合、複数のCRUDアクションが含まれ、データベーストランザクション内で実行する必要があります)。
    • アプリケーションのビジネスロジックが含まれています

本当にばかげた質問があります。これがサービス指向アーキテクチャの本質ですか?
ジョニー

@johnny:いいえ-SOAははるかに高いレベルの抽象化の概念であり、技術層よりもビジネス機能をどのように整理するかが重要です。
マイケルボルグ

誤用とは言いませんが。おそらく「ブランド変更」ですか?「MVC」と同じです。「MVC」は、Web開発のコンテキストでは、用語が作成されたPARCの時代とはまったく異なるものです。
トーマスジャンク

9

「フロントエンド」と「バックエンド」の両方を備えた「典型的な」ウェブサイトのアーキテクチャをスケッチしましょう。そして、それはウェブサイトなので、明示的に「クライアント」も持っています。(ブラウザのJavaScriptがサーバーのMySQLを直接呼び出す方法はないため。)

明確にするために、使用している用語は次のとおりです。

  • クライアント:HTML5準拠のブラウザ、特に DOMとそこにロードされたJavaScriptを操作するためにロードされます。
  • フロントエンド:DOMが指しているPHPサーバー。要求された個々のページとAJAXスタイルのXMLまたはJSONアクセスポイントの両方を含みます。
  • バックエンド:MySQLが実行されるデータベースサーバー。

適切に設計されたプログラムの場合、これらの各コンポーネントには他のコンポーネントと通信するためのプライベートAPIがあります。「フロントエンド」PHPコードは、任意のSQL SELECTステートメントを直接発行するのではなく、ストアドプロシージャ、事前承認されたSQL、またはバックエンドサーバーで実行れるまったく異なるPHPインスタンスへの個別のPHP呼び出しを呼び出します。これらのストアドプロシージャまたは個別のHTTP呼び出しは、それ自体がAPIです。

設計の不純性を考慮しても、定義は変わりません。PHPファイルがSQL文字列を直接MySQLに書き込んで送信する場合、非常に珍しいAPIですが、繰り返されることはほとんどありません。

フロントエンドphpを厳密に同期させることは完全に可能であり、AJAXブードゥーはまったくありません。上記の同期ファイルで同じ外部PHP関数を呼び出す場合、クライアント側バージョンと同じAPIを使用していると見なすことができますが、ここで「API」という用語を使用しても実際には明確にならない場合があります。

結局のところ、アプリケーションプログラミングインターフェイスとしてのAPIは、実際には、1つのプログラムが独自のプロセスの外で呼び出すときを指します。 上記のようなAJAX / PHP / MySQLまたはMS Access / SQL Serverであるフロントエンドとバックエンドの両方を備えたプロジェクトを作成している場合、相互に呼び出す方法を明示的に指定する価値があります。何かが壊れたときにどこを見ればよいかを簡単に知ること以外の理由がない場合。

(そして、パブリックAPIのトピックは完全に別のものです。上記の例では、クライアントに表示されるURLのみが「パブリックAPI」です。他のすべては、本質的に「プライベート」です。内部APIを呼び出すための制御不能なコード、およびそのような結果を完全に拒否するか、将来そのようにする権利を留保します。


2
実際には、フロントエンドはクライアント側コード(HTML、Javascript)であり、バックエンドはサーバーコード(PHP、Python、Ruby)です。
ピチコス

-3

APIは、GET、POST、FETCH、DELETE ...などのHTTP要求を処理します。これらは、json、xmlなどの特定の形式でデータを取得するためのトークンアクセスに応じて使用できます。

この「データ」を独自のアプリケーションに使用して、API(アプリケーションプログラミングインターフェース)を取得できます。API(アプリケーションプログラミングインターフェース)は、一部の視聴者にとって興味深いデータを収集するパブリックアクセス可能なWebサービスです。

このデータは、失敗を表すデータのセットを返すか、APIサーバーからデータを取得する場合があります

APIはバックエンドであるため、どのフロントエンド環境でも使用できます。これは、httpsリクエストを処理できるweb、android、ios ...アプリケーションで使用できることを意味します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.