この記事は、http モジュールについて学び、インターフェイスを作成するための基礎を築くのに役立ちます。お役に立てば幸いです。
#1. Web サーバー
Web サーバーとは何ですか?
アプリケーション (クライアント) は、特定のリソースが必要な場合、サーバーへの HTTP リクエストを通じてリソースを取得できます。リソースを提供するサーバーは Web サーバーです。
1.1 サーバーの初めての体験
##1.2 サーバーを作成する 2 つの方法
http.createServer はサーバー オブジェクトを返します
- 最下位層は実際には直接の新しいサーバー オブジェクトを使用します
-
1.3 リクエスト オブジェクト
#リクエスト オブジェクトは、クライアントからサーバーに渡されるすべての情報をカプセル化します
このリクエストの URL、サーバーは URL に応じて異なる方法で処理する必要があります; このリクエストのリクエスト メソッド (GET で渡されるパラメータなど)および POST リクエストの処理方法は異なります; このリクエストのヘッダーには、クライアント情報、データ受信形式、サポートされているエンコード形式などの情報も含まれます... 一般リクエスト:
##1.3.1 request-url
クライアントがリクエストを送信すると、さまざまなデータがリクエストされ、さまざまなリクエスト アドレスが渡されます。サーバーは、さまざまなリクエスト アドレスに基づいてさまざまな応答を行う必要があります。
ユーザーのリクエスト アドレスに追加のパラメーターも含まれている場合、それをどのように解析すればよいでしょうか?
url モジュールを使用できます。
その中で、url モジュールは URL の処理と解析のための実用的なツールを提供します
Import url const url = require('url')
リクエスト データが次のとおりであると仮定します。
コンソールによる URL の解析結果は次のとおりです。
パス名は、取得する必要がある最終パスです。私たちの目的は、クエリでユーザー名とパスワードを個別に取得することです。
Import querystring module
const qs = require('querystring');
const http = require("http")const url = require('url')const qs = require('querystring')// 1. 创建服务器const server = http.createServer((req, res) => {
// 使用内置模块
const{ pathname,query } = url.parse(req.url)
if(pathname === '/login'){
console.log(query);
console.log(qs.parse(query));
const { username, password } = qs.parse(query)
console.log(username,password);
res.end('请求结束')
}});// 2. 设置端口号并启动服务器server.listen(8888,'0.0.0.0',()=>{
console.log("服务器启动成功~");})
ログイン後にコピー
✅コンソール出力結果:
-
#1.3.2 request-method
##Restful 仕様 (設計スタイル) では、データの追加、削除、変更、確認にさまざまなリクエスト メソッドを使用する必要があります:
GET: データのクエリ;
POST: 新しいデータの作成;
PATCH: データの更新; - DELETE: データの削除
-
- リクエストメソッドの違いを判断して、異なる処理を行うことができます。
- 以下が本文内の JSON リクエスト データであると仮定します。> サーバーにユーザー名とパスワードを取得させるにはどうすればよいでしょうか?
##✅コンソール出力
- 1.3.2 request-headers
##content-type は、このリクエストで伝送されるデータのタイプです:
application/ json は json 型を意味します;
text/plain はテキスト型を意味します; application/xml は XML 型を意味します;
multipart/form-data ファイルのアップロードを示します。 -
- **content-length: **ファイルのサイズと長さ
- keep-alive:
-
- http は TCP プロトコルに基づいていますが、通常、リクエストと応答の直後に中断されます;
- http1.0 では、接続を維持し続けたい場合: ①ブラウザには次の要求があります。要求ヘッダーに接続を追加: keep-alive; ② サーバーは応答ヘッダーに接続: key-alive を追加する必要があります; ③ クライアントが再度要求を行うと、同じ接続が使用され、直接の当事者が接続を中断します。 connection;
- http1.1 では、すべての接続はデフォルトで connection: keep-alive になります: ① Web サーバーが異なればキープアライブ時間も異なります; ② Node のデフォルトは 5 秒です
# **accept-encoding: **クライアントがサポートしているファイル圧縮形式をサーバーに通知します。たとえば、js ファイルは .gz ファイルに対応する gzip を使用してエンコードできます**accept: **クライアントが受け入れ可能であることをサーバーに通知します ファイル形式タイプ; ##**user-agent: **クライアント関連情報;
1.4 応答オブジェクト
1.4.1 応答-応答オブジェクト
クライアントに結果データで応答したい場合は、次の 2 つの方法で応答できます。
Write メソッド: このメソッドはデータを直接書き込みますが、ストリームは閉じません;
end メソッド: このメソッドは最後のデータを書き込み、書き込み後にストリームは閉じられます; -
- 注: end と close を呼び出さない場合、クライアントは結果を待ちます。
#1.4.2 応答-応答コード
HTTP ステータス コード (HTTP ステータス コード) は、HTTP 応答ステータスを表すために使用される数値コードです。
HTTP ステータス コードは非常に多く、さまざまな状況に応じてさまざまなステータス コードがクライアントに返されます。一般的なステータス コードは次のとおりです (ステータス コードは後続のプロジェクトでも使用されます) )
##カテゴリ
| #理由フレーズ |
1xx |
情報 (情報ステータス コード)
承認されたリクエストの処理
|
2xx |
Success (成功ステータス コード) |
リクエストは正常に処理されました
|
3xx |
リダイレクト |
リクエストを完了するには追加のアクションが必要です
|
4xx |
クライアント エラー |
クライアント リクエスト エラー、サーバーはリクエストを処理できません
| #5xx | サーバー エラー | サーバーでリクエストの処理中にエラーが発生しました
|
一般的な応答コード: |
|
##ステータス コード
#説明ステータス
#説明 |
##200 | OKリクエストは成功しました。通常、GET および POST リクエストに使用されます |
400
不正なリクエスト | クライアント リクエストに構文エラーがあるため、サーバーは理解できません | | 401
Unauthorized | リクエストにはユーザー認証が必要です |
| 403
Forbidden | サーバーはクライアントからのリクエストを理解しましたが、リクエストの実行を拒否しました |
| 404
Not Found | サーバーは、クライアントのリクエストに基づくリソース (Web ページ)。このコードを通じて、Web サイト デザイナーは、「要求したリソースが見つかりません」 |
| #500
内部サーバー エラー | 用のパーソナライズされたページを設定できます。サーバー内部エラー、リクエストを完了できません |
#503 |
サービスが利用できません
サーバーは、過負荷または過負荷のため、クライアントのリクエストを一時的に処理できません。システム・メンテナンス。遅延の長さはサーバーの Retry-After ヘッダー情報に含めることができます |
|
|
ステータス コードを設定します:
|
|
|
##1.4.3 応答-応答ヘッダー
ヘッダー情報を返すには、主に 2 つの方法があります。 res.setHeader: 一度に 1 つのヘッダー情報を書き込みます; res.writeHead: ヘッダーとステータスを同時に書き込みます
#More ノード関連の知識については、nodejs チュートリアル を参照してください。
以上がHTTP モジュールを深く理解することができます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。