feathers.js:RESTFUL APIサーバーをすばやく構築するためのガイド
コアポイント:
上記の画像に示すように、アプリケーションサーバーのジョブは、SQLまたはNOSQLコマンドを使用してデータベースからデータにアクセスし、JSONなどのフロントエンドアプリケーション(クライアントブラウザー)が理解できる形式に変換することです。 。さらに、アプリケーションサーバーは、HTTPS暗号化やトークン認証など、さまざまなセキュリティプロトコルを使用して、データベースとクライアントアプリケーション間の通信が安全で信頼性が高いことを確認できます。このアーキテクチャを使用する主な利点の1つは、同じアプリケーションサーバーを使用して、DeskTop、モバイル、Webなどのさまざまなプラットフォームのアプリケーションを展開できることです。さらに、より多くのユーザーにサービスを効率的に提供し、応答時間を速くするために、アプリケーションを水平方向に拡張することも簡単です。
シンプルなAPIサーバーを構築し、Feathersが提供するさまざまな機能を実証します。
前提条件:
このチュートリアルを開始する前に、次のトピックについて強固な基盤が必要です。
プロジェクトの作成:
羽の使用を開始するには、コマンドラインアプリケーションをグローバルにインストールする必要があります。次に、次のコマンドを使用して新しいAPIプロジェクトを作成します。
npm install -g @feathersjs/cli
以下は私の選択です。好きなテストフレームワークを選択できます。残念ながら、このテストはこの記事の焦点の範囲内ではないため、ここではカバーされません。私は個人的にシンプルさが好きなので、冗談を選んだのです。
mkdir contacts-api cd contacts-api feathers generate app
インストールが完了したら、お気に入りのコードエディターを開いてプロジェクトファイルを表示できます。
前提条件セクションにリストしたExpressチュートリアルを完了した場合、生成されたコードは怖がらないはずです。これは、フォルダーとファイルを説明する短い要約です。
各ファイルの役割についてあまり心配しないでください。このチュートリアルを調べると、それらがどのように機能するかについて詳しく知ります。次に、テストが適切に機能していることを確認しましょう。
コードスタイルのチェック(糸くず):
私たちのプロジェクトが定義されたESLINTルールに準拠していることを確認するには、コマンドを実行するだけです。 UNIXプラットフォームまたはLinuxプラットフォームを使用している場合、これは正常に動作するはずです。 Windowsを使用している場合は、テストを正常に実行するために何かを調整する必要があります。
最初に、npm test
に移動し、
行を次のように変更します
package.json
scripts
次に、Visual Studioコードにきれいなインストールがある場合は、ワークスペース設定で単一の引用設定をtrueに変更する必要があります。
test
"scripts": { "test": "npm run eslint && SET NODE_ENV= npm run jest", },
Crud Restfulインターフェイスを生成する方法を見てみましょう。
{ "prettier.singleQuote": true }
サービスの生成:
ExpressにRESTFUL CRUD APIインターフェイスを構築するには、いくつかの作業が必要です。羽毛では、単一のコマンドを実行していくつかの質問に答えるだけでコードを生成できます。
このチュートリアルでは、NEDBデータベースを使用します。 Feathersは、SQLデータベース(MySQLなど)およびNOSQLデータベース(MongoDBなど)をサポートしています。ただし、マシン上でもクラウドサーバー上にデータベースシステムをインストールすると、構成に時間がかかります。一方、NEDBは、MongoDB APIのサブセットをサポートするJavaScriptで完全に記述されたインメモリデータベースです。設定は必要ありません。プロトタイプ化や新しいアプリケーションのテストに最適です。これは、このチュートリアルで使用するデータベースです。npm install -g @feathersjs/cli
このコマンドを使用して生成されたファイルの一部を簡単に見てみましょう。
。これは、services/contacts/contact.service.js
/contacts
。ここでは、CRUDロジックの動作をカスタマイズします。羽毛がデータベースを読み取るか書き留める前に、データをチェックまたは変更できるservices/contacts/contact.hooks.js
before
after
。ここでは、モデルを定義し、データベーステーブルに追加します。これは、新しいレコードが挿入または更新されたときにフィールドを検証するために使用できるパターンを定義する場所でもあります。残念ながら、NEDBはモードをサポートしていません。ただし、Mongooseアダプターを介してモード機能をサポートするMongoDBに接続されたモデルの例を提供しました。
models/contacts.model.js
:mkdir contacts-api cd contacts-api feathers generate app
があります。これは、Feathersアプリケーションを展開するときに使用される生産データベース構成です。開発中に別のデータベースを使用することが重要です。それ以外の場合、本番データベースでビジネス運用データを削除または損傷するリスクがあります。 config/default.json
連絡先のCRUDサービスをセットアップしたので、今度は試してみる時が来ました。コマンドを使用してfeatherサーバーを起動できます。このサーバーはホットリロードをサポートしていないことに注意してください。したがって、コードを変更するたびに再起動する必要があります。 Feathersアプリケーションと対話するには、郵便配達や不眠症などのAPIブラウザツールが必要です。このチュートリアルでは、不眠症を使用しますが、郵便配達員やその他のツールで簡単に実行できます。 npm start
ctrl n)を作成し、「リスト連絡先」と名付けます。 URLセクションで、を入力します。 [送信]ボタンをクリックすると、次のビューが表示されます。
http://localhost:3030/contacts
何も!現在、データベースが空であるため、新しい連絡先を作成する必要があります。 Create Contactという新しいリクエストを作成します。次のように残りのフィールドに入力します:
上記のフォームのメソッドを変更するのを忘れている場合は、後で変更できます。メソッドを変更して、[ボディ]タブをJSONに投稿して変更します。次のデータをJSONタブにコピーします:
[送信]ボタンをクリックすると、次の応答を受信する必要があります。新しい連絡先のために
npm install -g @feathersjs/cli
_id
「連絡先のリスト」に戻り、[送信]ボタンをもう一度クリックします。次の結果を取得する必要があります
「連絡先の作成」に戻り、いくつかの新しいレコードを公開してください:
mkdir contacts-api cd contacts-api feathers generate app
今すぐ更新操作を実行しましょう。この目的のために、更新HTTPメソッドは使用しません。この方法は、レコードを完全に上書きします。私たちがしたいのは、レコード全体ではなく、単一のフィールドを上書きすることだけです。これを行うには、パッチを使用します。以下に示すように、新しいリクエスト、「連絡先の更新」を作成します。
"scripts": { "test": "npm run eslint && SET NODE_ENV= npm run jest", },
{ "prettier.singleQuote": true }
URLフィールドに
を入力します。最初のレコードのIDにを置き換えます。次のデータをJSONタブに貼り付けます:
http://localhost:3030/contacts/{_id}
[送信]ボタンをクリックします。次の結果を確認する必要があります
{_id}
feathers generate service
残りのフィールドは変更されていないことに注意してください。次に、レコードを削除します。簡単です。新しい削除リクエストを作成し、「連絡先を削除」という名前を付けます。 URLフィールドでは、フォーマットhttp://localhost:3030/contacts/{_id}
を使用します。前と同じように、{_id}
を削除するレコードのIDに置き換えます。 「送信」をクリックすると、レコードが削除されます。リスト連絡先のリクエストを再度実行することで確認できます。
すべてのCRUD操作が適切に実行されていることを確認しました。次のセクションでは、認証をセットアップする方法を学びます。
(以下のコンテンツは元のテキストに似ていますが、読みやすさと流encyさを改善し、元の意図を変更しないようにするために、いくつかのステートメントの調整と段落合併が行われました。画像形式は変わらないままです。)
認証:
現在、/contacts
APIエンドポイントは保護されていません。アプリケーションをクラウドサーバーに展開すると、URLを持っている人なら誰でもレコードにアクセスして操作できます。アクセスを制限するには、認証をセットアップする必要があります。 JSON Webトークンを使用して、APIアプリケーションの認証を実装します。次のコマンドを実行して設定します
npm install -g @feathersjs/cli
次のオプションを選択します。
次に、新しいユーザーを作成する必要があります。これは、不眠症または他のAPIブラウザツールを使用して行うことができます。新しいリクエストを作成し、「ユーザーの作成」という名前を付けます。
jsonタブで、次のデータを送信します:
mkdir contacts-api cd contacts-api feathers generate app
ユーザーができました。新しいリクエスト「リストユーザー」を作成し、URL
を送信することにより、これを確認しましょう。残念ながら、次の回答を受け取りますこのデータにアクセスするには認証する必要があります。ログインに使用できるフロントエンドアプリケーションがないため、APIブラウザーの使用を継続します。新しいリクエストを作成し、「JWTトークンを取得」という名前を付けます。次のようにフォームに記入してください:http://localhost:3030/users
送信ボタンをクリックした後、次の応答を受信する必要があります。
トークンコードをコピーします(二重引用符なし)。リストユーザー要求ページに移動し、[Authタブ]タブを選択し、[BEARER]を選択します。このトークンコードをトークンフィールドに貼り付けます。
"scripts": { "test": "npm run eslint && SET NODE_ENV= npm run jest", },
URLエンドポイントを持つ人なら誰でも、新しいアカウントを作成してシステムにアクセスできます。新しいアカウントの不正な作成を防ぐには、このエンドポイントを制限する必要もあります。ファイルを開き、
を更新し、次のコードスニペットを更新します。これにより、認証されたユーザーのみが新しいアカウントを作成できるようになります。次のステップは、/contacts
エンドポイントを保護することです。ファイルを開き、それに応じて更新するだけです:services/contacts/contacts.hooks.js
認証するには、以前のようにベアラートークンをセットアップする必要があります。これを行ったら、リクエストを送信でき、連絡先リストを受け取る必要があります。以前に入手したトークンは1日で期限切れになることに注意してください。効率のために、環境変数を使用して、すべてのAPI要求パラメーターを一度に簡単に更新できるようにすることをお勧めします。フロントエンドアプリケーションを構築するときは、このトークンをローカルストレージに保存する必要があります。 Cookieを使用しないでください。それ以外の場合、アプリケーションはCSRF攻撃に対して脆弱になります。あなたが知っておくべき他のセキュリティリスクについては、Feathersセキュリティドキュメントをチェックしてください。
認証をセットアップしたので、後で作成された新しいサービスは、新しいエンドポイントを保護するオプションを提供します。次のセクションのこのチュートリアルの最後のトピックをチェックしてみましょう。
フック:フックは、エラーが発生した前、後、またはエラーが発生した場合、サービス方法に添付されたミドルウェア関数です。多くの場合、ロギングの処理、アクセスの制限、フィールドの保護、関連エンティティの充填、通知の送信などに使用されます。
を見ると、組み込みの羽毛フックが使用されていることがわかります。独自のカスタムフックを作成します。まず、サーバーを停止し、データベーステーブルを削除します。次に、次のコマンドを使用して新しいフックを生成します。
services/users/users.hooks.js
data/contacts.db
次のオプションを使用してカスタムフックを作成します
npm install -g @feathersjs/cli
process-contact
:現在ログインしているユーザーにリンクして
createdBy
_id
createdOn
hooks/process-contact.js
populate-user
:作成日を追加
hooks/populate-user
ファイルを開き、次のようにファイルを更新します。
を作成します。以下のスクリーンショットの指示に従ってください:
ファイルを開き、次のコードを挿入します これで、サーバーを起動できます。 CREATE CONTACTIONリクエストを使用して、3つの連絡先を再度作成します。ベアラートークンをセットアップしていない場合は、設定してください。それ以外の場合は、承認エラーを受け取ります。これは、新しい連絡先を作成するときに取得する必要がある応答のタイプです。
概要:独自のRestful APIサーバーをすばやく構築する方法を学んだことを願っています。私たちは基本に触れただけで、完全なガイドを読んで、羽が最小限の努力で高度な機能を達成するのに役立つより多くの機能を発見する必要があります。また、多くのリソースを含むAwesome Feathersページをチェックする必要があります。プラグイン、プロジェクトの例、またはチュートリアルが必要な場合でも、そこにリンクを見つけることができます。また、羽の拡張バージョンである羽毛CLIをチェックする必要があります。シードのコードを生成したり、GraphQLサポートをサポートしたりするなど、CLIが既に提供しているものに加えて、新しい機能を追加します。
contacts-api
プロジェクトをさらに改善する場合は、選択したフレームワークを使用して新しいフロントエンドアプリケーションを作成することをお勧めします。ログイン画面とCRUDページをビルドして、エンドポイントの/contacts
および/users
ページを作成します。課題を実装する楽しみをお楽しみください。
feathers.jsについてよく尋ねる質問:
feathers.jsとは何ですか? feathers.jsは、リアルタイムアプリケーションを構築するためのWebフレームワークです。軽量で柔軟で使いやすいように設計されており、スケーラブルで保守可能なサーバー側のアプリケーションを構築するためのツールとパターンのスイートを提供します。
feathers.jsによってサポートされているプログラミング言語は何ですか? feathers.jsは、主にサーバーとクライアント側でJavaScriptを使用します。サーバー上のnode.jsで使用でき、React、Angular、Vue.jsなどのフレームワークなど、クライアント上のさまざまなJavaScriptフレームワークをサポートできます。
feathers.jsの重要な機能は何ですか? feathers.jsには、リアルタイム機能(WebSocketおよびRESTFUL APIを介して)、サービス指向のアーキテクチャ、さまざまなデータベース(MongoDB、PostgreSQLなど)のサポート、認証および承認メカニズム、および拡張用のプラグインシステムが含まれます。
feathers.jsはリアルタイム通信をどのように処理しますか? Feathers.jsは、WebSocketの関数を使用してリアルタイム通信を実現します。これは、サーバー上のデータが変更されたときにクライアントがリアルタイムの更新を受信できるようにするために、ボックスからリアルタイムAPIを提供します。
サーバーサイドレンダリング(SSR)にfeathers.jsを使用できますか? feathers.jsは主にAPIおよびリアルタイムアプリケーションの構築に使用されますが、next.jsやnuxt.jsなどの他のフレームワークと併用して、Webアプリケーションのサーバーサイドレンダリング(SSR)を実装することができます。
すべての画像リンクは元の形式を保持します。
以上がFeathers.jsの初心者向けガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。