Express 4でRESTFUL APIを作成します
Express 3以降、多くの変更が変更されていることに注意してください。このチュートリアルは、Express 3からExpress 4にアプリをアップグレードする方法を説明していません。それでは、始めましょう。
キーテイクアウト
Express 4は、RESTFUL APIの作成を簡素化し、CRUDアプリケーション用のバックエンドAPIを簡単に設計できます。
- Express 4では、Expressコアの一部ではなくなったため、Body-Parserを個別にダウンロードする必要があります。このモジュールは、入ってくるリクエスト本体を解析するために使用され、Req.Bodyを介してPOSTリクエストの本文へのアクセスを可能にします。
- Express 4 Method Express.Router()は、中水とルートを定義できる新しいルーターインスタンスを作成します。このルーターインスタンスは、app.use()を呼び出すことにより、他のミドルウェアと同様にメインアプリで使用できます。 Express 4は、Get、Post、Put、Deleteなどの標準のHTTPメソッドをサポートして、データベース、この場合は映画データベースでCRUD操作を実行します。これは、これらのHTTPリクエストを処理するルートを作成することで行われます。
- ムービーアプリのAPIの作成
- 私たちのアプリは、基本的なCRUD操作をサポートするシンプルな映画データベースになります。 Express 4をWebフレームワークとして、Mongoo -Osejsをオブジェクトモデリングツールとして使用します。映画のエントリを保存するには、Mongodbを使用します さらに進む前に、APIがどのように見えるかを見てみましょう:
ディレクトリ構造
アプリで次のディレクトリ構造を使用します。
上記のディレクトリ構造に関するいくつかのポイントを次に示します
bin/www.jsは、アプリをブートストラップするために使用されます。
モデルディレクトリは、マングースモデルを保存します。このアプリには、ムービーと呼ばれるファイルが1つだけあります。
ルートディレクトリには、すべてのエクスプレスルートが保存されます。
app.jsは、Expressアプリの構成を保持します
最後に、node_modulesとpackage.jsonは、node.jsアプリの通常のコンポーネントです。 必要な依存関係の取得
- APIを作成するには、次のモジュールを使用します。
- express
- ボディパーサー
- mongoose
注 - ボディパーサーは、エクスプレスコアの一部ではなくなりました。モジュールを個別にダウンロードする必要があります。したがって、Package.json。
にリストしましたこれらのパッケージを取得するには、package.jsonの依存関係としてそれらをリストします。これが私たちのpackage.jsonファイルです:
<span>{ </span> <span>"name": "Movie CRUD API", </span> <span>"version": "0.0.1", </span> <span>"private": true, </span> <span>"scripts": { </span> <span>"start": "node ./bin/www" </span> <span>}, </span> <span>"main":"./bin/www", </span> <span>"engines": { </span> <span>"node": "0.10.x" </span> <span>}, </span> <span>"dependencies": { </span> <span>"express": "~4.2.0", </span> <span>"body-parser": "~1.0.0", </span> <span>"mongoose": "~3.8.11" </span> <span>} </span><span>}</span>
npmインストールを実行するだけで、すべての依存関係がダウンロードされ、node_modulesディレクトリの下に配置されます。
モデルの作成映画データベースのAPIを構築しているため、映画モデルを作成します。ムービー。JSという名前のファイルを作成し、モデルディレクトリに配置します。以下に示すこのファイルの内容は、マングースモデルを作成します。
前のスニペットでは、新しいモデル、映画を作成します。各映画には、タイトル、リリース年、ディレクター、ジャンルの4つのプロパティがあります。最後に、モデルをModule.Exportsに配置して、外部からアクセスできるようにします。
<span>var mongoose=require('mongoose'); </span><span>var Schema=mongoose.<span>Schema</span>; </span> <span>var movieSchema = new Schema({ </span> <span>title: String, </span> <span>releaseYear: String, </span> <span>director: String, </span> <span>genre: String </span><span>}); </span> module<span>.exports = mongoose.model('Movie', movieSchema);</span>
すべてのルートはルート/ムービーにあります。開始するには、ムービーに次のことを追加します。JSファイル:
Express 4には、Express.router()という新しいメソッドがあり、新しいルーターインスタンスが提供されます。ミドルウェアとルートを定義するために使用できます。 Expressルーターの興味深い点は、ミニアプリケーションのようなものだということです。このルーターを使用してミドルウェアとルートを定義し、app.use()を呼び出すことにより、他のミドルウェアと同じようにメインアプリで使用できます。 すべての映画を取得する
<span>var Movie = require('../models/movie'); </span><span>var express = require('express'); </span><span>var router = express.<span>Router</span>();</span>
ユーザーが /API /ムービーにget requestを送信する場合、すべての映画を含む応答を送信する必要があります。これがこのためのルートを作成するスニペットです。
router.route()1つ以上のHTTP動詞を構成するために使用できる単一のルートインスタンスを返します。ここでは、GETリクエストをサポートしたいと考えています。したがって、get()を呼び出し、リクエストが届いたときに呼び出されるコールバックを渡します。コールバック内で、Mongooseを使用してすべての映画を取得し、JSONとしてクライアントに送り返します。
新しい映画の作成
router<span>.route('/movies').get(function(req<span>, res</span>) { </span> <span>Movie.find(function(err<span>, movies</span>) { </span> <span>if (err) { </span> <span>return res.send(err); </span> <span>} </span> res<span>.json(movies); </span> <span>}); </span><span>});</span>
ここにコードがあります:
ここで、リクエスト本体から新しい映画インスタンスを作成します。これは、ボディパーサーが使用される場所です。次に、新しい映画を保存して、操作が成功していることを示す応答を送信します。
メソッドは()、post()などが同じルートインスタンスを返すことに注意してください。したがって、以下に示すように、あなたは実際に前の2つの呼び出しをチェーンすることができます。映画の更新
router<span>.route('/movies').post(function(req<span>, res</span>) { </span> <span>var movie = new Movie(req.body); </span> movie<span>.save(function(err) { </span> <span>if (err) { </span> <span>return res.send(err); </span> <span>} </span> res<span>.send({ message: 'Movie Added' }); </span> <span>}); </span><span>});</span>
ユーザーが映画を更新したい場合、json文字列をリクエスト本文として/api/movies/:idにput requestを送信する必要があります。名前付きパラメーター:IDを使用して、既存の映画にアクセスします。 Mongodbを使用しているため、すべての映画には_IDと呼ばれるユニークな識別子があります。したがって、パラメーターを取得し、特定の映画を見つけるためにそれを使用するだけです。これを行うコードは以下に示されています。
<span>{ </span> <span>"name": "Movie CRUD API", </span> <span>"version": "0.0.1", </span> <span>"private": true, </span> <span>"scripts": { </span> <span>"start": "node ./bin/www" </span> <span>}, </span> <span>"main":"./bin/www", </span> <span>"engines": { </span> <span>"node": "0.10.x" </span> <span>}, </span> <span>"dependencies": { </span> <span>"express": "~4.2.0", </span> <span>"body-parser": "~1.0.0", </span> <span>"mongoose": "~3.8.11" </span> <span>} </span><span>}</span>
ここで、新しいルート /ムービー /:IDを作成し、method put()を使用します。ムービーの呼び出し({_id:req.params.id})は、URLでIDが渡された映画を見つけるために使用されます。ムービーインスタンスができたら、リクエスト本体に合格したJSONに基づいて更新します。最後に、この映画を保存して、クライアントに応答を送信します。
映画を取得単一の映画を読むには、ユーザーはルート/API/MOVIES/:IDにGETリクエストを送信する必要があります。上記と同じルートを使用しますが、今回はget()を使用します。
コードの残りの部分は非常に簡単です。渡されたIDに基づいて映画を取得し、ユーザーに送信します。
<span>var mongoose=require('mongoose'); </span><span>var Schema=mongoose.<span>Schema</span>; </span> <span>var movieSchema = new Schema({ </span> <span>title: String, </span> <span>releaseYear: String, </span> <span>director: String, </span> <span>genre: String </span><span>}); </span> module<span>.exports = mongoose.model('Movie', movieSchema);</span>
ムービーを削除するには、ユーザーは/api/movies/:idに削除要求を送信する必要があります。繰り返しますが、ルートは上記と同じですが、メソッドは異なります(つまり、delete())。
メソッドMovie.Remove()はデータベースから映画を削除し、成功を示すメッセージをユーザーに送信します。
今、私たちはすべて設定されています。でも待って! RouterインスタンスをModule.Exportsに配置する必要があります。そうすれば、アプリでMiddleWareeとして使用できるようにする必要があります。したがって、これはファイルムービーの最後の行です。
<span>var Movie = require('../models/movie'); </span><span>var express = require('express'); </span><span>var router = express.<span>Router</span>();</span>
すべての構成はapp.jsに移動しますまず、必要なモジュールを必要とすることから始めます:
router<span>.route('/movies').get(function(req<span>, res</span>) { </span> <span>Movie.find(function(err<span>, movies</span>) { </span> <span>if (err) { </span> <span>return res.send(err); </span> <span>} </span> res<span>.json(movies); </span> <span>}); </span><span>});</span>
最後に、ミドルウェアを構成します:
あなたが見ることができるように、私は他のミドルウェアと同じようにルーターを使用しました。ルートミドルウェアが /APIにマッピングされるように、App.use()の最初の引数として /APIを渡しました。したがって、最終的にAPI URLは次のようになります
router<span>.route('/movies').post(function(req<span>, res</span>) { </span> <span>var movie = new Movie(req.body); </span> movie<span>.save(function(err) { </span> <span>if (err) { </span> <span>return res.send(err); </span> <span>} </span> res<span>.send({ message: 'Movie Added' }); </span> <span>}); </span><span>});</span>
/API/MOVIES
router<span>.route('/movies') </span> <span>.get(function(req<span>, res</span>) { </span> <span>Movie.find(function(err<span>, movies</span>) { </span> <span>if (err) { </span> <span>return res.send(err); </span> <span>} </span> res<span>.json(movies); </span> <span>}); </span> <span>}) </span> <span>.post(function(req<span>, res</span>) { </span> <span>var movie = new Movie(req.body); </span> movie<span>.save(function(err) { </span> <span>if (err) { </span> <span>return res.send(err); </span> <span>} </span> res<span>.send({ message: 'Movie Added' }); </span> <span>}); </span> <span>});</span>
router<span>.route('/movies/:id').put(function(req<span>,res</span>){ </span> <span>Movie.findOne({ _id: req.params.id }, function(err<span>, movie</span>) { </span> <span>if (err) { </span> <span>return res.send(err); </span> <span>} </span> <span>for (prop in req.body) { </span> movie<span>[prop] = req.body[prop]; </span> <span>} </span> <span>// save the movie </span> movie<span>.save(function(err) { </span> <span>if (err) { </span> <span>return res.send(err); </span> <span>} </span> res<span>.json({ message: 'Movie updated!' }); </span> <span>}); </span> <span>}); </span><span>});</span>
次のコードはbin/www.jsに送られます。これはアプリをブートストラップします。
- ノードbin/www.jsを実行することにより、APIはアップする必要があります!
- APIのテスト
router<span>.route('/movies/:id').get(function(req<span>, res</span>) { </span> <span>Movie.findOne({ _id: req.params.id}, function(err<span>, movie</span>) { </span> <span>if (err) { </span> <span>return res.send(err); </span> <span>} </span> res<span>.json(movie); </span> <span>}); </span><span>});</span>
結論
これは、ノードとエクスプレスで簡単にRESTFUL APIを作成する方法の基本的な概要でした。 Expressをより深く掘り下げたい場合は、必ずドキュメントをチェックしてください。何かを追加または尋ねたい場合は、お気軽にコメントしてください。
アプリのソースコードは、githubでダウンロードできます。
Express 4
で安らかなAPIを作成することについて、よくある質問(FAQ)
RESTFUL APIと他のタイプのAPIの違いは何ですか?RESTFUL API、または表現状態転送APIは、RESTアーキテクチャスタイルの原理を順守するAPIの一種です。これらは無国籍です。つまり、クライアントからサーバーへの各リクエストには、リクエストを理解して処理するために必要なすべての情報が含まれている必要があります。これは、リクエスト間で状態を維持できるSOAPなど、他のタイプのAPIとは異なります。 RESTFUL APIは、Get、Post、Put、Deleteなどの標準のHTTPメソッドも使用し、理解しやすく使用できます。 4、app.get()メソッドを使用して基本ルートを作成できます。この方法は、パスとコールバック関数の2つの引数を取ります。コールバック関数は、指定されたパスにGETリクエストが行われるたびに実行されます。例は次のとおりです。app.get( '/'、function(req、res){
res.send( 'hello world!');});
ルートパス( '/')にgetリクエストが行われ、サーバーは「Hello World!」で応答します。リクエストを投稿しますExpress 4、app.post()メソッドを使用できます。このメソッドは、app.get()と同様に機能しますが、Get Requestsの代わりにPOSTリクエストに使用されます。例は次のとおりです。app.post( '/'、function(req、res){
res.send( 'post request request Receece');
});
ルートパス( '/')に投稿リクエストが行われ、サーバーは「POSTリクエストを受信した」で応答します。 >ミドルウェア関数は、リクエストオブジェクト(Req)、応答オブジェクト(RES)、およびアプリケーションのリクエスト応答サイクルの次の関数にアクセスできる関数です。次の関数は、Expressルーターの関数であり、呼び出されると、現在のミドルウェアに続くミドルウェアを実行します。ミドルウェア関数は、次のタスクを実行できます。任意のコードを実行し、リクエストと応答オブジェクトを変更し、リクエスト応答サイクルを終了し、スタックの次のミドルウェアを呼び出します。 4?
app.use(function(err、req、res、next){
console.error(err.stack); res.status(500).send( '何かが壊れた! ');
});
この例では、アプリでエラーが発生した場合、コンソールにログに記録され、サーバーは500のステータスコードとのメッセージで応答します「何かが壊れた!」
Express 4ルートでパラメーターを使用するにはどうすればよいですか?
ルートパラメーターを使用して、URLの動的値をキャプチャできます。これらの値は、ルートハンドラーで使用できます。例は次のとおりです。
app.get( '/users/:userid'、function(req、res){
res.send( 'user id is:' req.params.userid);
} );
この例では、 '/users/123'にget requestが行われると、サーバーは「ユーザーID:123」で応答します。 Express 4?
Express 4は、静的ファイルを提供するために、組み込みのミドルウェア関数であるExpress.Static()を提供します。それを使用して、サーバー上のディレクトリからファイルを提供できます。例は次のとおりです。
app.use(express.static( 'public'));この例では、「public」ディレクトリ内のファイルはルートURL( '/')から直接アクセスできます。 🎜>
Express 4でボディパーサーミドルウェアを使用するにはどうすればよいですか?
var bodyparser = require( 'body-parser');
app.use(bodyparser.json());app.use(bodyparser.urlencoded({extended:true}) );
この例では、ボディパーサーのミドルウェアは、JSONとURLエンコードされたボディを解析するように構成されています。 Express 4の404エラーを処理しますか?
ミドルウェアスタックの最後にミドルウェア関数を追加することで、404エラーを処理できます。他のルートハンドラーやミドルウェア関数がリクエストを処理していない場合、この関数は実行されます。例は次のとおりです。
app.use(function(req、res、next){
});
この例では、存在しないパスにリクエストが行われた場合、サーバーは404のステータスコードと「ごめんなさい、それを見つけることができません!」というメッセージで応答します。 Expressを使用するにはどうすればよいですかExpress 4のルーター?Express Routerは、エクスプレス4のミニアプリケーションであり、モジュール式の方法でルートを整理できます。 Express.router()を使用して新しいルーターを作成し、ミドルウェアとルートを追加してから、app.use()を使用してアプリで使用できます。例は次のとおりです。
var router = express.router();
router.get( '/'、function(req、res){
res.send( 'hello from the router!'); });
app.use( '/router'、router);
この例では、get requestが '/router'に作成されると、サーバーはサーバーが行われます「Hello from the Router!」で応答します。以上がExpress 4でRESTFUL APIを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

フロントエンドのVSCodeと同様に、パネルドラッグアンドドロップ調整機能の実装を調べます。フロントエンド開発では、VSCODEと同様のVSCODEを実装する方法...
