エクスプレスミドルウェアボディパーサー

リクエストボディは、HTTPリクエスト種、POST、PUT、PATCHリクエストメソッドの三種類、いわゆるリクエスト、ネイティブHTTP Nodejsモジュールが含まれ、流れ体に基づいて要求を受信した方法を解析します。
ボディパーサーHTTPリクエストボディミドルウェアを解析 JSONを解析することができる。このモジュールを使用して、生、テキスト、URLエンコードフォーマットのリクエストボディ、


ノードネイティブHTTPモジュール、データを要求REQオブジェクトに対するユーザリクエストにカプセル化され、オブジェクトがIncomingMessageで、オブジェクトは、ストリーム・オブジェクトを読み取られます。ネイティブHTTPサーバが第三者に依存しているか、モジュールを解析していない場合は、以下の方法を要求し、リクエストボディを解析して


    constの HTTP =( 'HTTP'に必要)。

    http.createServer(関数(REQ、RES){ 
        場合 'ポスト' ===(req.method.toLowerCase()){ 
            本体せ = '' ;
             // 此步骤为接收数据 
            req.on( 'データ' 、関数(チャンク){ 
                本体 + = チャンク; 
            }); 
            // 开始解析 
            req.on( '末端' 、関数(){
                 場合(req.headers [ 'コンテンツタイプ']のindexOf( 'アプリケーション/ JSON')! == - 1 ){ 
                    JSON.parse(本体); 
                } そうでない 場合(req.headers [ 'コンテンツタイプ']のindexOf( 'ファイルapplication / octet-streamと')== - 。!。1 ){
                     // RWAリクエストボディフォーマット解析 
                }  IF(req.headers [ 'コンテンツタイプ'] .indexOf( 'text / plainの')== - !1 ){
                     // テキストリクエストボディテキスト解析 
                }  IF(req.headers [ 'コンテンツタイプ']のindexOf(「ファイルアプリケーション/ X-WWW-フォーム- 。 !)」URLエンコード== - 1 ){
                     // URLエンコードフォーマットリクエストボディの解析 
                } {
                 // 他の形式の解析
                } 
            })
        } { 
            RES。終わり('その他のモード' 
        } 
    })。聞く( 3000)

 

 

エクスプレスデフォルトの枠体-パーサがミドルウェアとしてリクエストボディを解析し、app.jsファイル内Expressプロジェクトの作成後に見つけることができます

/ * 引入依赖项* / 
VARエクスプレス =( '発現'が必要)。
// ...... 
するvar bodyParserは=( 'ボディパーサー'を必要)。

VaRのルート =は( './ルート/インデックス'を必要とします)。
VARのユーザー =は(」./ルート/ユーザーを必要とします)。

VARアプリ = エクスプレス()。

// ... 

// 解析アプリケーション/ JSONの
app.use(bodyParser.json())。 
// 解析アプリケーション/ x-www-form-urlencodedで 
app.use(bodyParser.urlencoded())。

 

これは、アプリケーション・プログラム・レベル、その要求を処理するために身体パーサモジュールの導入を可能にします。上記のコード、処理モジュールアプリケーション/ x-www-form-urlencodedで、アプリケーション/ JSONリクエストボディの2つの形式で。

この中間の後、あなたはすべてのルーティングプロセッサにリクエストパラメータにアクセスすることができますreq.body

実際のプロジェクトでは、異なる経路は、コンテンツの異なるタイプを使用することをユーザに要求することができる、ボディパーサーはまた、同様に、その解析個々のルーティング追加要求のためのサポートを表明します

インクルードが必要= VAR( 'Expressのエクスプレス・;)
するvar bodyParser =必要( 'bodyParser' ); 

VARのApp = 新しい新しいExpressを(); 

// 解析するアプリケーション/ JSONを作成 
するvar jsonParser = bodyParser.jsonを(); 

// アプリケーションを作成します。 / x-www-form-urlencodedで 
VAR urlencodedParser = bodyParser.urlencoded({拡張:falseに}); 

// URLエンコードされたPOST /ログイン要求ボディゲット 
app.post( '/ログイン' 、urlencodedParser、機能(REQ、RES ){
     IF(req.body)!返す res.sendStatus(400 ); 
    res.send( + '購入のために利用できる'をreq.body.username); 
})

//POST / API /ユーザーはJSONエンコードされたリクエストボディの取得 
app.postを( '/ API /ユーザの、jsonParser、機能(REQ、RES){
     IF(req.body)!戻り res.sendStatus(400 );
     // ユーザーを作成しますでreq.body 
})

 

 

 

<<要求タイプが指定>>
ボディパーサーは、リクエストボディのコンテンツタイプの特定のタイプのための1つ又は解析の仕様をサポートする手段、タイミング、タイプパラメータが解析方法で解析のContent-Typeを指定する追加することによって変更することができます。
例えば、text / plainのコンテンツタイプのためにJSONの解析を使用して

app.use(bodyParser.json({タイプ: 'text / plainの'}))

 

このオプションは、複数の非標準のリクエストヘッダに解決されます

// JSONカスタム解析 
:app.use(bodyParser.json({ 'ファイルアプリケーション/ JSON * +'型)})

// 解析カスタムバッファ 
app.use(bodyParser.raw({タイプ:「ファイルアプリケーション/ VNDを型.custom ' }))

// HTML文字列処理としてリクエストボディを 
:app.use(bodyParser.text({タイプ' )テキスト/ HTML「})

 

 

<<ボディパーサーモジュールAPI >>

身体が要求を解決する際に時間が空である場合、分析値は、req.body特性を置かれ、空の被写体} {
 --- bodyParser.json() - 解析JSON形式
 --- bodyParser.raw( ) - バイナリフォーマットを解析
 --- bodyParser.text() - パーステキスト形式
 --- bodyParser.urlencoded() -パーステキスト形式

 





出典ます。https://www.jianshu.com/p/cd3de110b4b6

おすすめ

転載: www.cnblogs.com/JonaLin/p/11310468.html