Node.js学習ノート(六)expressモジュール
9459 ワード
ExpressはWebアプリケーションのフレームワークであり、Webアプリケーションを迅速に構築するのに役立ちます.
1、Hello World
まず簡単な小型アプリケーションを構築し、Expressの基本的な使用方法を熟知します.まず、プロジェクトのルートディレクトリとして新しいフォルダを作成し、そのフォルダの下でコマンドライン を開く.は、その後、 であるは、 が配置されます.は最後に
上は簡単なアプリですが、文法を理解する必要はありません.後で一つ一つ説明します.
最後にコマンドラインを開き、コマンド
2、基礎ルートの設定
ルーティングは、アプリケーションが特定のクライアントリクエストにどのように応答するかを決定します.
各ルーティングには、ルーティングマッチング時に実行される1つ以上の処理関数があり、構文フォーマットは次のとおりです.
ここで、METHODはリクエストメソッドを表し、PATHはマッチングパスを表し、HANDLERはルーティングマッチング時の処理ロジックを表す
以下のコードを例にとると、クライアントがGETメソッドでルートパスリソースを要求すると、匿名関数を実行し、Hello World応答を送信する
(1)METHOD
METHODは要求方法を定義し、ExpressはすべてのHTTP要求方法をサポートし、以下にいくつかの例を示す. を定義する. を定義する. を定義する.
(2)PATH
PATHは、文字列、文字列モード、または正規表現とすることができる一致パスを定義します.以下に例を示します. に一致する.
また、指定された位置の値をキャプチャし、
(3)HANDLER
HANDLERは、ルーティングマッチング時の処理ロジックであり、関数、関数配列、または両方の組合せ形式であってもよい
複数の関数のセットを使用する場合は、
一般的に、関数にはRequestオブジェクトとResponseオブジェクトの2つのパラメータがあり、要求と応答データの処理に使用されます.
Requestオブジェクトの一般的なプロパティとメソッドは、次のとおりです.
属性とメソッド
説明
ip
IPアドレス
originalUrl
元のURL
baseURL
ベースURL
protocol
プロトコルのタイプ
hostname
ホスト名
subdomains
サブドメイン名
path
リソースパス
query
クエリー文字列
route
現在の一致ルーティング
params
GETリクエストのコンテンツを取得するためのルーティングパラメータ
body
cookies
指定したHTTPリクエストヘッダを取得する
Responseオブジェクトの一般的なプロパティと方法は、次のとおりです.
属性とメソッド
説明
HTTP応答ヘッダの設定
HTTP応答ヘッダに戻る
HTTP応答ヘッダの追加
Cookieの設定
Cookieをクリア
指定したパスにリダイレクト
レスポンスの転送
トランスファステータスコード
ファイルの転送
JSONデータ転送
JSONPデータの転送
応答の終了
3、高級ルート設定
(1)
同じパスの異なるリクエストメソッドに対して異なる処理関数を定義する必要がある場合は、
(2)
ルーティングファイル
次に、アプリケーション
4、ミドルウェア関数
ミドルウェア(Middleware)は実際には、リクエストオブジェクトRequest、レスポンスオブジェクトResponse、next関数にアクセスできる関数です.
ミドルウェアのロード順序は非常に重要で、先にロードされたミドルウェアは先に実行され、ミドルウェアは以下のいくつかのカテゴリに分けることができる.アプリケーション・レベルのミドルウェア: にバインドされます.ルータレベルミドルウェア: で動作します.エラー処理ミドルウェア:アプリケーションレベルミドルウェアとルータレベルミドルウェアの定義と同じ違いは、エラー処理ミドルウェアのパラメータが4つあり、それぞれ である.内蔵ミドルウェア:一般的な内蔵ミドルウェアは について説明する.サードパーティミドルウェア:一般的なサードパーティミドルウェアは、公式ドキュメント を参照できます.
5、静的ファイル
Expressに内蔵されたミドルウェア関数
ここでrootは静的ファイルを格納するルートディレクトリパスを表し、optionsはより詳細な情報を提供するオブジェクトです.
たとえばhttp://127.0.0.1:5000/images/icon.png、http://127.0.0.1:5000/hello.htmlなど
仮想パス接頭辞を作成する必要がある場合は、マウント時に指定できます.これにより、クライアントは既存のパスの前に仮想接頭辞を追加してリソースにアクセスする必要があります.
たとえばhttp://127.0.0.1:5000/static/images/icon.png、http://127.0.0.1:5000/static/hello.htmlなど
【ノード.jsシリーズの詳細は、ノード.js学習ノートを参照してください】
1、Hello World
まず簡単な小型アプリケーションを構築し、Expressの基本的な使用方法を熟知します.
npm init
コマンドを使用して、プロジェクトのプロファイルpackage.json
ファイルを生成する.npm install --save express
コマンドを使用してExpressをインストールし、node_modules
ディレクトリの下にserver.js
ファイルを作成し、このファイルには次のコードを記述する:// Express
var express = require('express')
// Express
var app = express()
//
app.get('/', function (req, res) {
res.send('Hello World')
})
// , 5000
var server = app.listen(5000, '127.0.0.1', function() {
console.log('server running at http://127.0.0.1:5000')
})
上は簡単なアプリですが、文法を理解する必要はありません.後で一つ一つ説明します.
最後にコマンドラインを開き、コマンド
node server.js
を入力して開きます.http://127.0.0.1:5000/ハローワールドの挨拶が見えます2、基礎ルートの設定
ルーティングは、アプリケーションが特定のクライアントリクエストにどのように応答するかを決定します.
各ルーティングには、ルーティングマッチング時に実行される1つ以上の処理関数があり、構文フォーマットは次のとおりです.
app.METHOD(PATH, HANDLER)
ここで、METHODはリクエストメソッドを表し、PATHはマッチングパスを表し、HANDLERはルーティングマッチング時の処理ロジックを表す
以下のコードを例にとると、クライアントがGETメソッドでルートパスリソースを要求すると、匿名関数を実行し、Hello World応答を送信する
app.get('/', function (req, res) {
res.send('Hello World')
})
(1)METHOD
METHODは要求方法を定義し、ExpressはすべてのHTTP要求方法をサポートし、以下にいくつかの例を示す.
app.get(PATH, HANDLER)
は、GETメソッドを使用してPATHパス上のリソースを要求するときに実行する論理HANDLER app.post(PATH, HANDLER)
は、POSTメソッドを使用してPATHパス上のリソースを要求するときに実行する論理HANDLER app.all(PATH, HANDLER)
は、任意の方法でPATHパス上のリソースを要求するときに実行する論理HANDLER (2)PATH
PATHは、文字列、文字列モード、または正規表現とすることができる一致パスを定義します.以下に例を示します.
'/about'
マッチング要求経路/about '/ab?cd'
マッチング要求パス/acd、/abcd(?:マッチング前の文字0回または1回)'/ab+cd'
マッチング要求経路/abcd,/abbcd等(+:マッチング+前の文字1回または複数回)/a/
は、任意の文字aを含む要求経路(正規表現を使用してほとんどすべての複雑なニーズを満たすことができる)また、指定された位置の値をキャプチャし、
:
に保存するパラメータをパスに指定することもできます.var express = require('express')
var app = express()
app.get('/', function (req, res) {
res.send('Hello World')
})
app.get('/firstname/:firstname/lastname/:lastname', function (req, res) {
let params = req.params
let result = params.firstname + ' ' + params.lastname
res.send(result)
})
var server = app.listen(5000, '127.0.0.1', function() {
console.log('server running at http://127.0.0.1:5000')
})
/*
* :
* http://127.0.0.1:5000
* Hello World
* http://127.0.0.1:5000/firstname/Steve/lastname/Jobs
* Steve Jobs
**/
(3)HANDLER
HANDLERは、ルーティングマッチング時の処理ロジックであり、関数、関数配列、または両方の組合せ形式であってもよい
複数の関数のセットを使用する場合は、
req.params
メソッドを使用して後続の関数に制御権を渡す必要があります.そうしないと、直接終了します.var express = require('express')
var app = express()
var sayHello = function (req, res) {
res.send('Hello World')
}
var reverseMessage = function(req, res) {
let message = req.params.message
let reverse = message.split('').reverse().join('')
res.send(reverse)
}
var showParams = function (req, res, next) {
let params = req.params
console.log('---Params')
for (let prop in params) {
console.log(prop + ': ' + params[prop])
}
console.log('---------')
next()
}
app.get('/', sayHello)
app.get('/reverse/:message', [showParams, reverseMessage])
var server = app.listen(5000, '127.0.0.1', function() {
console.log('server running at http://127.0.0.1:5000')
})
一般的に、関数にはRequestオブジェクトとResponseオブジェクトの2つのパラメータがあり、要求と応答データの処理に使用されます.
Requestオブジェクトの一般的なプロパティとメソッドは、次のとおりです.
属性とメソッド
説明
ip
IPアドレス
originalUrl
元のURL
baseURL
ベースURL
protocol
プロトコルのタイプ
hostname
ホスト名
subdomains
サブドメイン名
path
リソースパス
query
クエリー文字列
route
現在の一致ルーティング
params
GETリクエストのコンテンツを取得するためのルーティングパラメータ
body
next()
ミドルウェアを使用する場合、POSTデータを取得するための要求主体を含むcookies
body-parser
ミドルウェアを使用する場合、Cookieコンテンツを取得するためのCookieオブジェクトが含まれるcookie-parser
指定したHTTPリクエストヘッダを取得する
Responseオブジェクトの一般的なプロパティと方法は、次のとおりです.
属性とメソッド
説明
get(field)
HTTP応答ヘッダの設定
set(field[,value])
HTTP応答ヘッダに戻る
get(field)
HTTP応答ヘッダの追加
append(field[,value])
Cookieの設定
cookie(name,value[,option])
Cookieをクリア
clearCookie(name[,options])
指定したパスにリダイレクト
redirect([status,]path)
レスポンスの転送
send([body])
トランスファステータスコード
sendStatus(code)
ファイルの転送
sendFile(path[,options][,fn])
JSONデータ転送
json([body])
JSONPデータの転送
jsonp([body])
応答の終了
3、高級ルート設定
(1)
end([data][,encoding])
同じパスの異なるリクエストメソッドに対して異なる処理関数を定義する必要がある場合は、
app.route()
が良い選択です.app.route('/book')
.get(function (req, res) {
res.send('Get a book')
})
.post(function (req, res) {
res.send('Add a book')
})
.put(function (req, res) {
res.send('Update the book')
})
(2)
app.route(path)
express.Router()
は、expressのインスタンスと同様にルーティングおよびミドルウェアを追加できるRouterインスタンスを作成するために使用されます.ルーティングファイル
express.Router([options])
を作成し、ファイルに次のコードを記述できます.var express = require('express')
var router = express.Router()
//
router.use((req, res, next) => {
console.log(' : ' + Date.now())
next()
})
//
router.get('/', (req, res, next) => {
res.send('Home Page')
})
router.get('/about', (req, res, next) => {
res.send('About Page')
})
module.exports = router
次に、アプリケーション
router.js
にルーティングファイルをロードできます.コードは次のとおりです.var express = require('express')
var router = require('./router')
var app = express()
app.use('/router', router)
var server = app.listen(5000, '127.0.0.1', function() {
console.log('server running at http://127.0.0.1:5000')
})
4、ミドルウェア関数
ミドルウェア(Middleware)は実際には、リクエストオブジェクトRequest、レスポンスオブジェクトResponse、next関数にアクセスできる関数です.
ミドルウェアのロード順序は非常に重要で、先にロードされたミドルウェアは先に実行され、ミドルウェアは以下のいくつかのカテゴリに分けることができる.
server.js
メソッドおよびapp.METHOD()
メソッドによってexpressインスタンスvar express = require('express')
var app = express()
// ,
app.use(function (req, res, next) { //
console.log('Time: ' + Date.now())
next()
})
app.get('/user/:id', function (req, res, next) { //
res.send('Hello, ' + req.params.id)
})
var server = app.listen(5000, '127.0.0.1', function() {
console.log('server running at http://127.0.0.1:5000')
})
app.use()
メソッドとrouter.METHOD()
メソッドによってRouterインスタンスにバインドされます.アプリケーションレベルミドルウェアと同じvar express = require('express')
var router = express.Router()
router.use(function (req, res, next) { //
console.log('Time: ' + Date.now())
next()
})
router.get('/user', function (req, res) { //
res.send('Hello, ' + req.params.id)
})
var app = express()
app.use('/virtual', router)
var server = app.listen(5000, '127.0.0.1', function() {
console.log('server running at http://127.0.0.1:5000')
})
router.use()
app.use(function(err, req, res, next) {
console.error(err.stack)
res.status(500).send('Error!')
})
function(err, req, res, next)
であり、以下では5、静的ファイル
Expressに内蔵されたミドルウェア関数
express.static()
は、画像、CSS、JSなどの静的ファイルをマウントできます.構文フォーマットは次のとおりです.express.static(root, [options])
ここでrootは静的ファイルを格納するルートディレクトリパスを表し、optionsはより詳細な情報を提供するオブジェクトです.
express.static()
ディレクトリは静的ファイルを格納するために使用され、public
ファイルはプログラムのメインエントリであり、ディレクトリ構造は以下の通りである.+ app
+ node_module
+ public
+ images
- icon.png
- background.png
- index.html
- style.css
- script.js
- server.js
- package.json
server.js
ファイルにserver.js
ディレクトリの下のコンテンツがオープンであることを宣言することで、クライアントはアドレスを通じてリソースを直接要求することができます.たとえばhttp://127.0.0.1:5000/images/icon.png、http://127.0.0.1:5000/hello.htmlなど
app.use(express.static('public'))
仮想パス接頭辞を作成する必要がある場合は、マウント時に指定できます.これにより、クライアントは既存のパスの前に仮想接頭辞を追加してリソースにアクセスする必要があります.
たとえばhttp://127.0.0.1:5000/static/images/icon.png、http://127.0.0.1:5000/static/hello.htmlなど
app.use('/static', express.static('public'))
【ノード.jsシリーズの詳細は、ノード.js学習ノートを参照してください】