feathers.js:RESTFUL APIサーバーをすばやく構築するためのガイド
コアポイント:
- 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サーバーは、フロントエンドアプリケーションにデータを提供するプログラムです。また、バックエンドでビジネスロジックを処理し、組織のデータベースへの制限されたアクセスを提供します。許可されていない人々がデータにアクセスすることを妨げるだけでなく、ユーザーにログインしている場合、データを制限したり、データを変更したりできます。
上記の画像に示すように、アプリケーションサーバーのジョブは、SQLまたはNOSQLコマンドを使用してデータベースからデータにアクセスし、JSONなどのフロントエンドアプリケーション(クライアントブラウザー)が理解できる形式に変換することです。 。さらに、アプリケーションサーバーは、HTTPS暗号化やトークン認証など、さまざまなセキュリティプロトコルを使用して、データベースとクライアントアプリケーション間の通信が安全で信頼性が高いことを確認できます。このアーキテクチャを使用する主な利点の1つは、同じアプリケーションサーバーを使用して、DeskTop、モバイル、Webなどのさまざまなプラットフォームのアプリケーションを展開できることです。さらに、より多くのユーザーにサービスを効率的に提供し、応答時間を速くするために、アプリケーションを水平方向に拡張することも簡単です。
シンプルなAPIサーバーを構築し、Feathersが提供するさまざまな機能を実証します。
前提条件:
このチュートリアルを開始する前に、次のトピックについて強固な基盤が必要です。
- es6 javascript
- Expressアプリケーションを作成
- express
- を使用してRESTFUL APIを作成します
プロジェクトの作成:
羽の使用を開始するには、コマンドラインアプリケーションをグローバルにインストールする必要があります。次に、次のコマンドを使用して新しい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
このコマンドを使用して生成されたファイルの一部を簡単に見てみましょう。
。これは、- のCRUD APIエンドポイントを提供するFeathersサービスです。とても小さいですね。これは、羽が私たちのために重い持ち上げをしたからです。これにより、ボイラープレートのCRUDコードを書くことから救われます。
-
services/contacts/contact.service.js
/contacts
。ここでは、CRUDロジックの動作をカスタマイズします。羽毛がデータベースを読み取るか書き留める前に、データをチェックまたは変更できる セクションがあります。また、クライアントアプリケーションに送信する前に、データベースの結果をチェックまたは変更できる - セクションもあります。アクセスの制限、データ検証、結合操作の実行、追加のフィールドまたは列の値の計算などの操作を実行できます。
services/contacts/contact.hooks.js
before
after
。ここでは、モデルを定義し、データベーステーブルに追加します。これは、新しいレコードが挿入または更新されたときにフィールドを検証するために使用できるパターンを定義する場所でもあります。残念ながら、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
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ご覧のとおり、Feathersはさまざまなユーザー認証方法をサポートしています。 「ローカルユーザー名パスワード」オプションを設定するのが最も簡単です。
次のオプションを選択します。
次に、新しいユーザーを作成する必要があります。これは、不眠症または他の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このフックでやりたいことは、「連絡先の作成」リクエストを処理する前に、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 サイトの他の関連記事を参照してください。

JavaScriptコアデータ型は、ブラウザとnode.jsで一貫していますが、余分なタイプとは異なる方法で処理されます。 1)グローバルオブジェクトはブラウザのウィンドウであり、node.jsのグローバルです2)バイナリデータの処理に使用されるNode.jsの一意のバッファオブジェクト。 3)パフォーマンスと時間の処理にも違いがあり、環境に従ってコードを調整する必要があります。

javascriptusestwotypesofcomments:シングルライン(//)およびマルチライン(//)

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
