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>APIは、 /API /ムービーにPOSTリクエストが作成されたときに、データベースに新しい映画を作成する必要があります。 JSON文字列は、リクエスト本文として送信する必要があります。同じルート、 /ムービーを使用しますが、get()の代わりにメソッドpost()を使用します。
ここにコードがあります:
ここで、リクエスト本体から新しい映画インスタンスを作成します。これは、ボディパーサーが使用される場所です。次に、新しい映画を保存して、操作が成功していることを示す応答を送信します。
メソッドは()、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の構成
すべての構成は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>次のステップは、Mongooseを介してMongodbに接続することです
最後に、ミドルウェアを構成します:
あなたが見ることができるように、私は他のミドルウェアと同じようにルーターを使用しました。ルートミドルウェアが /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>/api/movies/:id
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 サイトの他の関連記事を参照してください。

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

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

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

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。
