ホームページ > ウェブフロントエンド > jsチュートリアル > Feathers.jsの初心者向けガイド

Feathers.jsの初心者向けガイド

Jennifer Aniston
リリース: 2025-02-14 09:55:13
オリジナル
995 人が閲覧しました

feathers.js:RESTFUL APIサーバーをすばやく構築するためのガイド

A Beginner’s Guide to Feathers.js

コアポイント:

  • Feathers.jsは、Restful APIサーバーの作成を簡素化し、ほとんどの繰り返しバックエンド作業を処理し、開発者がコードのカスタマイズと構成に集中できるようにします。
  • このフレームワークは、Expressに基づいて構築され、SQLおよびNOSQLデータベースをサポートし、必要なコードを自動的に生成するサービスを使用して、CRUD操作を簡単に実行できるようにします。
  • Feathers.jsでの認証は、JSON Web Tokens(JWT)を使用してAPIエンドポイントを保護し、認定ユーザーのみがデータにアクセスまたは変更できるようにすることができます。
  • Feathers.jsのフックは、データがデータベースに到達する前または後にデータを操作するミドルウェア関数として機能します。これは、検証、承認、動的なフィールドの追加などのタスクに非常に役立ちます。
  • Feathers.jsは、使いやすく拡張できるように設計されており、WebSocketsを介したリアルタイムの更新をサポートし、さまざまなフロントエンドフレームワークに柔軟なアーキテクチャを提供します。
  • この記事では、feathers.jsを使用してnode.jsでRESTFUL APIサーバーを構築するように導きます。
  • Application Serverとも呼ばれるAPIサーバーは、フロントエンドアプリケーションにデータを提供するプログラムです。また、バックエンドでビジネスロジックを処理し、組織のデータベースへの制限されたアクセスを提供します。許可されていない人々がデータにアクセスすることを妨げるだけでなく、ユーザーにログインしている場合、データを制限したり、データを変更したりできます。
ビルドするすべてのアプリケーションは、エンドユーザーにサービスを提供する必要があります。これを行うには、アプリケーションがデータを処理する必要があります。リモートAPIを使用して、新しいサービスを作成できます。ただし、ほとんどのアプリケーションでは、独自のデータストレージを管理する必要があります。一般的なオプションは、FireBaseなどのオンラインデータストレージサービスを使用することです。このようにして、分散データベースサーバーを実行することの退屈な詳細に対処する必要はありません。ただし、プロジェクトの要件には、MongodbやOracleなどの完全に機能する内部データベース管理システムが必要になる場合があります。フロントエンドアプリケーションがデータベースに保存されているデータにアクセスするには、データベースとフロントエンドアプリケーションの間にあるサーバーアプリケーションが必要です。

上記の画像に示すように、アプリケーションサーバーのジョブは、SQLまたはNOSQLコマンドを使用してデータベースからデータにアクセスし、JSONなどのフロントエンドアプリケーション(クライアントブラウザー)が理解できる形式に変換することです。 。さらに、アプリケーションサーバーは、HTTPS暗号化やトークン認証など、さまざまなセキュリティプロトコルを使用して、データベースとクライアントアプリケーション間の通信が安全で信頼性が高いことを確認できます。このアーキテクチャを使用する主な利点の1つは、同じアプリケーションサーバーを使用して、DeskTop、モバイル、Webなどのさまざまなプラットフォームのアプリケーションを展開できることです。さらに、より多くのユーザーにサービスを効率的に提供し、応答時間を速くするために、アプリケーションを水平方向に拡張することも簡単です。

シンプルなAPIサーバーを構築し、Feathersが提供するさまざまな機能を実証します。

前提条件:

このチュートリアルを開始する前に、次のトピックについて強固な基盤が必要です。

    es6 javascript
  • Expressアプリケーションを作成
  • express
  • を使用してRESTFUL APIを作成します
羽は、Node.jsのミニマリストのWebフレームワークであるExpressの上に構築されています。リンクで実証されているチュートリアルを完了すると、Expressのみを使用してRESTFUL APIを構築することは非常に面倒です。羽を使用すると、繰り返しの仕事のほとんどがあなたのために行われます。コードの構成とカスタマイズに集中する必要があります。コードを掘り下げて、このWebフレームワークがどのように機能するかを学びましょう。

プロジェクトの作成:

羽の使用を開始するには、コマンドラインアプリケーションをグローバルにインストールする必要があります。

次に、次のコマンドを使用して新しいAPIプロジェクトを作成します。
npm install -g @feathersjs/cli
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

以下は私の選択です。好きなテストフレームワークを選択できます。残念ながら、このテストはこの記事の焦点の範囲内ではないため、ここではカバーされません。私は個人的にシンプルさが好きなので、冗談を選んだのです。

mkdir contacts-api
cd contacts-api
feathers generate app
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

インストールが完了したら、お気に入りのコードエディターを開いてプロジェクトファイルを表示できます。 A Beginner’s Guide to Feathers.js

前提条件セクションにリストしたExpressチュートリアルを完了した場合、生成されたコードは怖がらないはずです。これは、フォルダーとファイルを説明する短い要約です。 A Beginner’s Guide to Feathers.js

各ファイルの役割についてあまり心配しないでください。このチュートリアルを調べると、それらがどのように機能するかについて詳しく知ります。次に、テストが適切に機能していることを確認しましょう。 A Beginner’s Guide to Feathers.js

コードスタイルのチェック(糸くず):

私たちのプロジェクトが定義されたESLINTルールに準拠していることを確認するには、コマンドを実行するだけです。 UNIXプラットフォームまたはLinuxプラットフォームを使用している場合、これは正常に動作するはずです。 Windowsを使用している場合は、テストを正常に実行するために何かを調整する必要があります。

最初に、npm testに移動し、

セクションを表示します。

行を次のように変更します package.json scripts次に、Visual Studioコードにきれいなインストールがある場合は、ワークスペース設定で単一の引用設定をtrueに変更する必要があります。 test

最後に、ファイルを作成または編集するときに、NewlineがLFであることを確認してください。 Visual Studioコードまたは同様のエディターを使用している場合は、ステータスバーの現在の新しいラインスタイルを確認できます。 CRLFが表示されている場合は、LFに変更します。これらの変更を加えると、コードスタイルのチェックテストに合格するのに役立ちます。残念ながら、テストに合格するにはより多くの作業が必要であり、ここでは紹介されません。
"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
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

このコマンドを使用して生成されたファイルの一部を簡単に見てみましょう。

。これは、
    のCRUD APIエンドポイントを提供するFeathersサービスです。とても小さいですね。これは、羽が私たちのために重い持ち上げをしたからです。これにより、ボイラープレートのCRUDコードを書くことから救われます。
  • services/contacts/contact.service.js/contacts。ここでは、CRUDロジックの動作をカスタマイズします。羽毛がデータベースを読み取るか書き留める前に、データをチェックまたは変更できる
  • セクションがあります。また、クライアントアプリケーションに送信する前に、データベースの結果をチェックまたは変更できる
  • セクションもあります。アクセスの制限、データ検証、結合操作の実行、追加のフィールドまたは列の値の計算などの操作を実行できます。 services/contacts/contact.hooks.js beforeafter。ここでは、モデルを定義し、データベーステーブルに追加します。これは、新しいレコードが挿入または更新されたときにフィールドを検証するために使用できるパターンを定義する場所でもあります。残念ながら、NEDBはモードをサポートしていません。ただし、Mongooseアダプターを介してモード機能をサポートするMongoDBに接続されたモデルの例を提供しました。
  • NEDBにはいくつかの制限にもかかわらず、それはまだプロトタイピングに非常に適したデータベースです。ほとんどのNOSQLデータベースを使用すると、最初にスキーマを定義せずに構造を使用してデータを送信できます。プロジェクトの要件を実装した後、モデルを実装するのが最善です。パターンを使用すると、Feathersは定義したルールを使用してフィールド検証を実行します。スキーマを定義するには、生産対応のデータベース(MongoDBなど)が必要です。開発データベースの構成定義はmodels/contacts.model.js
  • にあることに注意してください。
mkdir contacts-api
cd contacts-api
feathers generate app
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
これは、データベースの資格情報が提供される場所です。別の構成ファイル

があります。これは、Feathersアプリケーションを展開するときに使用される生産データベース構成です。開発中に別のデータベースを使用することが重要です。それ以外の場合、本番データベースでビジネス運用データを削除または損傷するリスクがあります。 config/default.json

連絡先のCRUDサービスをセットアップしたので、今度は試してみる時が来ました。コマンドを使用してfeatherサーバーを起動できます。このサーバーはホットリロードをサポートしていないことに注意してください。したがって、コードを変更するたびに再起動する必要があります。 Feathersアプリケーションと対話するには、郵便配達や不眠症などのAPIブラウザツールが必要です。このチュートリアルでは、不眠症を使用しますが、郵便配達員やその他のツールで簡単に実行できます。 npm start

新しいget request(press

ctrl n)を作成し、「リスト連絡先」と名付けます。 URLセクションで、を入力します。 [送信]ボタンをクリックすると、次のビューが表示されます。 http://localhost:3030/contacts

A Beginner’s Guide to Feathers.js 何も!現在、データベースが空であるため、新しい連絡先を作成する必要があります。 Create Contactという新しいリクエストを作成します。次のように残りのフィールドに入力します:

A Beginner’s Guide to Feathers.js 上記のフォームのメソッドを変更するのを忘れている場合は、後で変更できます。メソッドを変更して、[ボディ]タブをJSONに投稿して変更します。次のデータをJSONタブにコピーします:

[送信]ボタンをクリックすると、次の応答を受信する必要があります。新しい連絡先のために
npm install -g @feathersjs/cli
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
が生成されたことに注意してください。

_id

A Beginner’s Guide to Feathers.js 「連絡先のリスト」に戻り、[送信]ボタンをもう一度クリックします。次の結果を取得する必要があります

「連絡先の作成」に戻り、いくつかの新しいレコードを公開してください:

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にA Beginner’s Guide to Feathers.js を置き換えます。次のデータをJSONタブに貼り付けます:

http://localhost:3030/contacts/{_id}[送信]ボタンをクリックします。次の結果を確認する必要があります {_id}

feathers generate service
ログイン後にコピー

残りのフィールドは変更されていないことに注意してください。次に、レコードを削除します。簡単です。新しい削除リクエストを作成し、「連絡先を削除」という名前を付けます。 URLフィールドでは、フォーマットhttp://localhost:3030/contacts/{_id}を使用します。前と同じように、{_id}を削除するレコードのIDに置き換えます。 「送信」をクリックすると、レコードが削除されます。リスト連絡先のリクエストを再度実行することで確認できます。

すべてのCRUD操作が適切に実行されていることを確認しました。次のセクションでは、認証をセットアップする方法を学びます。

(以下のコンテンツは元のテキストに似ていますが、読みやすさと流encyさを改善し、元の意図を変更しないようにするために、いくつかのステートメントの調整と段落合併が行われました。画像形式は変わらないままです。)

認証:

現在、/contactsAPIエンドポイントは保護されていません。アプリケーションをクラウドサーバーに展開すると、URLを持っている人なら誰でもレコードにアクセスして操作できます。アクセスを制限するには、認証をセットアップする必要があります。 JSON Webトークンを使用して、APIアプリケーションの認証を実装します。次のコマンドを実行して設定します

npm install -g @feathersjs/cli
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ご覧のとおり、Feathersはさまざまなユーザー認証方法をサポートしています。 「ローカルユーザー名パスワード」オプションを設定するのが最も簡単です。

次のオプションを選択します。

次に、新しいユーザーを作成する必要があります。これは、不眠症または他のAPIブラウザツールを使用して行うことができます。新しいリクエストを作成し、「ユーザーの作成」という名前を付けます。

jsonタブで、次のデータを送信します:

mkdir contacts-api
cd contacts-api
feathers generate app
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
次のような応答を受信する必要があります。

ユーザーができました。新しいリクエスト「リストユーザー」を作成し、URL

を送信することにより、これを確認しましょう。残念ながら、次の回答を受け取ります

このデータにアクセスするには認証する必要があります。ログインに使用できるフロントエンドアプリケーションがないため、APIブラウザーの使用を継続します。新しいリクエストを作成し、「JWTトークンを取得」という名前を付けます。次のようにフォームに記入してください:http://localhost:3030/users

このリクエストでは、POSTメソッドを使用します。さらに明確にするために、「ログイン」に名前を変更できます。 [JSON]タブで、次のデータをコピーします

送信ボタンをクリックした後、次の応答を受信する必要があります。

トークンコードをコピーします(二重引用符なし)。リストユーザー要求ページに移動し、[Authタブ]タブを選択し、[BEARER]を選択します。このトークンコードをトークンフィールドに貼り付けます。

"scripts": {
  "test": "npm run eslint && SET NODE_ENV= npm run jest",
},
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
[送信]ボタンをクリックした後、ユーザーリストが表示されます。認証システムは完全に安全ではないことに注意してください。

URLエンドポイントを持つ人なら誰でも、新しいアカウントを作成してシステムにアクセスできます。新しいアカウントの不正な作成を防ぐには、このエンドポイントを制限する必要もあります。ファイルを開き、

を更新し、次のコードスニペットを更新します。

これにより、認証されたユーザーのみが新しいアカウントを作成できるようになります。次のステップは、/contactsエンドポイントを保護することです。ファイルを開き、それに応じて更新するだけです:services/contacts/contacts.hooks.js

CODEの変更が有効になるようにFeathersサーバーを再起動します。リスト連絡先のリクエストを実行しようとすると、次の回答が表示されます。

認証するには、以前のようにベアラートークンをセットアップする必要があります。これを行ったら、リクエストを送信でき、連絡先リストを受け取る必要があります。以前に入手したトークンは1日で期限切れになることに注意してください。効率のために、環境変数を使用して、すべてのAPI要求パラメーターを一度に簡単に更新できるようにすることをお勧めします。フロントエンドアプリケーションを構築するときは、このトークンをローカルストレージに保存する必要があります。 Cookieを使用しないでください。それ以外の場合、アプリケーションはCSRF攻撃に対して脆弱になります。あなたが知っておくべき他のセキュリティリスクについては、Feathersセキュリティドキュメントをチェックしてください。

認証をセットアップしたので、後で作成された新しいサービスは、新しいエンドポイントを保護するオプションを提供します。次のセクションのこのチュートリアルの最後のトピックをチェックしてみましょう。

フック:

フックは、エラーが発生した前、後、またはエラーが発生した場合、サービス方法に添付されたミドルウェア関数です。多くの場合、ロギングの処理、アクセスの制限、フィールドの保護、関連エンティティの充填、通知の送信などに使用されます。

を見ると、組み込みの羽毛フックが使用されていることがわかります。独自のカスタムフックを作成します。まず、サーバーを停止し、

データベーステーブルを削除します。次に、次のコマンドを使用して新しいフックを生成します。 services/users/users.hooks.js data/contacts.db次のオプションを使用してカスタムフックを作成します

npm install -g @feathersjs/cli
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
このフックでやりたいことは、「連絡先の作成」リクエストを処理する前に、2つの新しいフィールドを注入することです。

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート