ホームページ ウェブフロントエンド jsチュートリアル Egg.jsでHTTPパラメータを取得する方法

Egg.jsでHTTPパラメータを取得する方法

Mar 24, 2018 am 09:16 AM
egg.js http javascript

今回はnotesとは何かを紹介します。実際の事例を見てみましょう。

今回は、Egg.jsでHTTPパラメータを取得する方法と、Egg.jsでHTTPパラメータを取得する際の注意点について説明します。以下は実践的なケースですので、見てみましょう。

Egg.js フレームワークでは、基本的にコントローラーがビジネス開発において HTTP プロトコルと対話する唯一の場所であるため、フレームワークはユーザーが送信したものを取得するために、コントローラーにバインドされた Context インスタンスを通じて多くの便利なメソッドとプロパティを提供します。 HTTP リクエストにパラメータが渡されました。この記事では、http リクエストのパラメータを取得する方法をまとめます。

1.query

URL 内の次の部分は、GET タイプのリクエストでパラメータを渡すためによく使用されます。たとえば、GET /search?name=egg&age=26 では、name=egg&age=26 がユーザーによって渡されるパラメータです。 context.query (オブジェクト) を通じて、解析されたパラメータ本体を取得できます

module.exports = app => {  class SearchController extends app.Controller {
    * search() {      const queryObj = this.ctx.query;      console.log(queryObj.age);      console.log(queryObj);      //打印结果:{ name: 'egg', age: '26' }
    }
  }  return SearchController;
};
ログイン後にコピー

クエリ文字列内のキーが繰り返される場合、context.query は、キーが初めて出現したときのみ、およびその後のすべての出現時に値を取得します。無視されます。 GET /posts?category=egg&category=koa context.query で取得した値は { category: 'egg' } です。

1.1 クエリ

システムは、GET /posts?category=egg&id=1&id=2&id=3 など、ユーザーが同じキーを渡せるように設計されている場合があります。このような状況に備えて、フレームワークは context.queries オブジェクトを提供します。これはクエリ文字列も解析しますが、重複データは破棄せず、すべてを配列に入れます:

// GET /posts?category=egg&id=1&id=2&id=3const Controller = require('egg').Controller;module.exports = class PostController extends Controller {
  * listPosts() {    console.log(this.ctx.queries);    //result:
    // {
    //   category: [ 'egg' ],
    //   id: [ '1', '2', '3' ],
    // }
  }
};
ログイン後にコピー

context.queries すべてのキーに値がある場合、それらは配列型である必要があります。

2. ルーターのパラメーター

パラメーターはルーターでも宣言でき、これらのパラメーターは context.params を通じて取得できることがわかっています。

// app.get('/projects/:projectId/app/:appId', 'app.listApp');// GET /projects/1/app/2const Controller = require('egg').Controller;module.exports = class AppController extends Controller {
    * listApp() {    assert.equal(this.ctx.params.projectId, '1');    assert.equal(this.ctx.params.appId, '2');
  }
};
ログイン後にコピー

3. body

URL を介してパラメーターを渡すことはできますが、依然として多くの制限があります:

渡す必要があるパラメーターが多すぎる場合、ブラウザーには制限が適用されません。合格した。

サーバーは、アクセスされた完全な URL をログ ファイルに記録することがよくありますが、その URL を介して機密データを渡すことは安全ではありません。

ヘッダーの後にボディ部分があることがわかっており、通常はこの部分で POST、PUT、DELETE などのメソッドのパラメーターを渡します。一般に、リクエストに本文がある場合、クライアント (ブラウザ) は Content-Type も送信して、このリクエストの本文がどのような形式であるかをサーバーに伝えます。 Web 開発におけるデータ転送で最も一般的に使用される 2 つの形式は、JSON とフォームです。

フレームワークには、これら 2 種類の形式のリクエスト本文を object に解析し、context.request.body にマウントする組み込みの bodyParser ミドルウェア があります。 HTTP プロトコルでは GET メソッドや HEAD メソッドでアクセスする際にボディを渡すことが推奨されていないため、この方法では GET メソッドや HEAD メソッドでコンテンツを取得することはできません。

// POST /api/posts HTTP/1.1// Host: localhost:3000// Content-Type: application/json; charset=UTF-8//// {"title": "controller", "content": "what is controller"}const Controller = require('egg').Controller;module.exports = class PostController extends Controller {
  * listPosts() {    assert.equal(this.ctx.request.body.title, 'controller');    assert.equal(this.ctx.request.body.content, 'what is controller');
  }
};
ログイン後にコピー

フレームワークは、bodyParser のいくつかのデフォルト パラメーターを設定します。

要求された Content-Type が application/json、application/json-patch+json、application/vnd.api+json の場合。 application/ csp-report では、リクエスト本文は json 形式に従って解析され、本文の最大長は 100kb に制限されます。

リクエストのContent-Typeがapplication/x-www-form-urlencodedの場合、リクエストボディはフォーム形式に従って解析され、ボディの最大長は100kbに​​制限されます。

解析が成功すると、body は間違いなく Object (おそらく配列) になります。

一般的に、最も頻繁に調整される設定項目は、解析中に許可される最大長を変更することです。config/config.default.js でフレームワークのデフォルト値をオーバーライドできます

module.exports = {
  bodyParser: {
    jsonLimit: '1mb',
    formLimit: '1mb',
  },
};
ログイン後にコピー

ユーザーのリクエスト本文が解析を超える場合は、設定された最大長により、ステータス コード 413 の例外がスローされます。ユーザーが要求した本文が解析に失敗した場合 (間違った JSON)、ステータス コード 400 の例外がスローされます。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

Mysqld_multi デプロイメント スタンドアロンの詳細な説明

1 つの SQL ステートメントで異なるデータベースにクエリを実行する方法

JS は選択ドロップダウン ボックスの最初の要素の値を取得します

以上がEgg.jsでHTTPパラメータを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

Web ページのリダイレクトの一般的なアプリケーション シナリオを理解し、HTTP 301 ステータス コードを理解する Web ページのリダイレクトの一般的なアプリケーション シナリオを理解し、HTTP 301 ステータス コードを理解する Feb 18, 2024 pm 08:41 PM

HTTP 301 ステータス コードの意味を理解する: Web ページ リダイレクトの一般的なアプリケーション シナリオ インターネットの急速な発展に伴い、Web ページの操作に対する人々の要求はますます高くなっています。 Web デザインの分野では、Web ページのリダイレクトは一般的かつ重要なテクノロジであり、HTTP 301 ステータス コードによって実装されます。この記事では、HTTP 301 ステータス コードの意味と、Web ページ リダイレクトにおける一般的なアプリケーション シナリオについて説明します。 HTTP301 ステータス コードは、永続的なリダイレクト (PermanentRedirect) を指します。サーバーがクライアントのメッセージを受信すると、

HTTP 200 OK: 成功した応答の意味と目的を理解する HTTP 200 OK: 成功した応答の意味と目的を理解する Dec 26, 2023 am 10:25 AM

HTTP ステータス コード 200: 成功した応答の意味と目的を調べる HTTP ステータス コードは、サーバーの応答のステータスを示すために使用される数値コードです。このうち、ステータス コード 200 は、リクエストがサーバーによって正常に処理されたことを示します。この記事では、HTTP ステータス コード 200 の具体的な意味と使用法について説明します。まず、HTTP ステータス コードの分類を理解しましょう。ステータス コードは、1xx、2xx、3xx、4xx、5xx の 5 つのカテゴリに分類されます。このうち、2xx は成功応答を示します。 200 は 2xx で最も一般的なステータス コードです

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

HTTP リクエストのタイムアウトに対してどのようなステータス コードが返されますか? HTTP リクエストのタイムアウトに対してどのようなステータス コードが返されますか? Feb 18, 2024 pm 01:58 PM

HTTP リクエストがタイムアウトになり、サーバーから 504GatewayTimeout ステータス コードが返されることがよくあります。このステータス コードは、サーバーがリクエストを実行しても、リクエストに必要なリソースを取得できないか、一定時間が経過してもリクエストの処理を完了できないことを示します。これは 5xx シリーズのステータス コードで、サーバーに一時的な問題または過負荷が発生し、その結果クライアントのリクエストを正しく処理できなくなったことを示します。 HTTP プロトコルでは、さまざまなステータス コードに特定の意味と用途があり、504 ステータス コードはリクエストのタイムアウトの問題を示すために使用されます。顧客の中で

C++ を使用して HTTP ストリーミングを実装するにはどうすればよいですか? C++ を使用して HTTP ストリーミングを実装するにはどうすればよいですか? May 31, 2024 am 11:06 AM

C++ で HTTP ストリーミングを実装するにはどうすればよいですか? Boost.Asio と asiohttps クライアント ライブラリを使用して、SSL ストリーム ソケットを作成します。サーバーに接続し、HTTP リクエストを送信します。 HTTP 応答ヘッダーを受信して​​出力します。 HTTP 応答本文を受信して​​出力します。

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

HTTP 503エラーの解決方法 HTTP 503エラーの解決方法 Mar 12, 2024 pm 03:25 PM

解決策: 1. 再試行: 一定時間待ってから再試行するか、ページを更新できます; 2. サーバーの負荷を確認します: サーバーの CPU、メモリ、およびディスクの使用状況を確認します。容量制限を超えている場合は、次のことを試してください。サーバー構成を最適化するか、サーバーの容量を増やします サーバー リソース; 3. サーバーのメンテナンスとアップグレードを確認します: サーバーが通常に戻るまで待つしかありません; 4. ネットワーク接続を確認します: ネットワーク接続が安定していることを確認し、ネットワークが正常に動作しているかどうかを確認しますデバイス、ファイアウォール、またはプロキシ設定が正しいことを確認します; 5. キャッシュまたは CDN 構成が正しいことを確認します; 6. サーバー管理者などに連絡します。

See all articles