وحدة Node http

توفر وحدة http الخاصة بـ Node.js وظائف وفئات مفيدة لبناء خادم HTTP

وحدة HTTP الأساسية هي وحدة أساسية لشبكات Node.

يمكن تضمينه باستخدام

const http = require('http')

توفر الوحدة بعض الخصائص والأساليب وبعض الفئات.

ملكيات

http.METHODS

تسرد هذه الخاصية جميع طرق HTTP المدعومة:

> require('http').METHODS
[ 'ACL',
  'BIND',
  'CHECKOUT',
  'CONNECT',
  'COPY',
  'DELETE',
  'GET',
  'HEAD',
  'LINK',
  'LOCK',
  'M-SEARCH',
  'MERGE',
  'MKACTIVITY',
  'MKCALENDAR',
  'MKCOL',
  'MOVE',
  'NOTIFY',
  'OPTIONS',
  'PATCH',
  'POST',
  'PROPFIND',
  'PROPPATCH',
  'PURGE',
  'PUT',
  'REBIND',
  'REPORT',
  'SEARCH',
  'SUBSCRIBE',
  'TRACE',
  'UNBIND',
  'UNLINK',
  'UNLOCK',
  'UNSUBSCRIBE' ]

http.STATUS_CODES

تسرد هذه الخاصية جميع رموز حالة HTTP ووصفها:

> require('http').STATUS_CODES
{ '100': 'Continue',
  '101': 'Switching Protocols',
  '102': 'Processing',
  '200': 'OK',
  '201': 'Created',
  '202': 'Accepted',
  '203': 'Non-Authoritative Information',
  '204': 'No Content',
  '205': 'Reset Content',
  '206': 'Partial Content',
  '207': 'Multi-Status',
  '208': 'Already Reported',
  '226': 'IM Used',
  '300': 'Multiple Choices',
  '301': 'Moved Permanently',
  '302': 'Found',
  '303': 'See Other',
  '304': 'Not Modified',
  '305': 'Use Proxy',
  '307': 'Temporary Redirect',
  '308': 'Permanent Redirect',
  '400': 'Bad Request',
  '401': 'Unauthorized',
  '402': 'Payment Required',
  '403': 'Forbidden',
  '404': 'Not Found',
  '405': 'Method Not Allowed',
  '406': 'Not Acceptable',
  '407': 'Proxy Authentication Required',
  '408': 'Request Timeout',
  '409': 'Conflict',
  '410': 'Gone',
  '411': 'Length Required',
  '412': 'Precondition Failed',
  '413': 'Payload Too Large',
  '414': 'URI Too Long',
  '415': 'Unsupported Media Type',
  '416': 'Range Not Satisfiable',
  '417': 'Expectation Failed',
  '418': 'I\'m a teapot',
  '421': 'Misdirected Request',
  '422': 'Unprocessable Entity',
  '423': 'Locked',
  '424': 'Failed Dependency',
  '425': 'Unordered Collection',
  '426': 'Upgrade Required',
  '428': 'Precondition Required',
  '429': 'Too Many Requests',
  '431': 'Request Header Fields Too Large',
  '451': 'Unavailable For Legal Reasons',
  '500': 'Internal Server Error',
  '501': 'Not Implemented',
  '502': 'Bad Gateway',
  '503': 'Service Unavailable',
  '504': 'Gateway Timeout',
  '505': 'HTTP Version Not Supported',
  '506': 'Variant Also Negotiates',
  '507': 'Insufficient Storage',
  '508': 'Loop Detected',
  '509': 'Bandwidth Limit Exceeded',
  '510': 'Not Extended',
  '511': 'Network Authentication Required' }

http.globalAgent

يشير إلى المثيل العام لكائن العامل ، وهو مثيل لـhttp.Agentصف دراسي.

يتم استخدامه لإدارة استمرارية الاتصالات وإعادة استخدامها لعملاء HTTP ، وهو مكون رئيسي لشبكات Node HTTP.

المزيد فيhttp.Agentوصف الفصل في وقت لاحق.

أساليب

http.createServer()

قم بإرجاع مثيل جديد منhttp.Serverصف دراسي.

استعمال:

const server = http.createServer((req, res) => {
  //handle every single request with this callback
})

http.request()

يجعل طلب HTTP إلى خادم ، مما يؤدي إلى إنشاء مثيل لـhttp.ClientRequestصف دراسي.

http.get()

مشابه لhttp.request()، ولكنه يقوم تلقائيًا بتعيين طريقة HTTP على GET والمكالماتreq.end()تلقائيا.

الطبقات

توفر وحدة HTTP 5 فئات:

  • http.Agent
  • http.ClientRequest
  • http.Server
  • http.ServerResponse
  • http.IncomingMessage

http.Agent

تقوم العقدة بإنشاء مثيل عالمي لملفhttp.Agentفئة لإدارة استمرار الاتصالات وإعادة استخدامها لعملاء HTTP ، وهو مكون رئيسي لشبكات Node HTTP.

يتأكد هذا الكائن من وضع كل طلب يتم إجراؤه على الخادم في قائمة الانتظار وإعادة استخدام مقبس واحد.

كما أنها تحافظ على مجموعة من المقابس. هذا هو المفتاح لأسباب الأداء.

http.ClientRequest

انhttp.ClientRequestيتم إنشاء الكائن عندماhttp.request()أوhttp.get()يسمى.

عندما يتم تلقي رد ، فإنresponseيتم استدعاء الحدث مع الاستجابة ، بعلامةhttp.IncomingMessageالمثال كحجة.

يمكن قراءة البيانات التي تم إرجاعها من الرد بطريقتين:

  • يمكنك الاتصال بـresponse.read()طريقة
  • في الresponseمعالج الحدث ، يمكنك إعداد مستمع حدث لـdataالحدث ، حتى تتمكن من الاستماع إلى البيانات المتدفقة إلى.

http.Server

عادةً ما يتم إنشاء مثيل لهذه الفئة وإعادتها عند إنشاء خادم جديد باستخدامhttp.createServer().

بمجرد أن يكون لديك كائن خادم ، يمكنك الوصول إلى طرقه:

  • close()توقف الخادم عن قبول الاتصالات الجديدة
  • listen()يبدأ خادم HTTP ويستمع إلى الاتصالات

http.ServerResponse

تم إنشاؤها بواسطةhttp.Serverوتم تمريره باعتباره المعلمة الثانية إلىrequestحدث ذلك.

المعروف والمستخدم بشكل شائع في الكود كـres:

const server = http.createServer((req, res) => {
  //res is an http.ServerResponse object
})

الطريقة التي ستستدعيها دائمًا في المعالج هيend()الذي يغلق الاستجابة ، تكون الرسالة كاملة ويمكن للخادم إرسالها إلى العميل. يجب أن يتم استدعاؤها في كل استجابة.

تُستخدم هذه الطرق للتفاعل مع رؤوس HTTP:

  • getHeaderNames()الحصول على قائمة أسماء رؤوس HTTP التي تم تعيينها بالفعل
  • getHeaders()الحصول على نسخة من رؤوس HTTP التي تم تعيينها بالفعل
  • setHeader('headername', value)يعيّن قيمة رأس HTTP
  • getHeader('headername')يحصل على رأس HTTP تم تعيينه بالفعل
  • removeHeader('headername')يزيل رأس HTTP الذي تم تعيينه بالفعل
  • hasHeader('headername')إرجاع صحيح إذا كان الرد يحتوي على رأس مجموعة
  • headersSent()العودة صحيحًا إذا تم إرسال الرؤوس بالفعل إلى العميل

بعد معالجة الرؤوس ، يمكنك إرسالها إلى العميل عن طريق الاتصالresponse.writeHead()، والتي تقبل رمز الحالة كمعامل أول ورسالة الحالة الاختيارية وكائن الرؤوس

لإرسال البيانات إلى العميل في نص الاستجابة ، يمكنك استخدامwrite(). سيرسل البيانات المخزنة إلى تدفق استجابة HTTP.

إذا لم يتم إرسال الرؤوس باستخدامresponse.writeHead()، سيرسل الرؤوس أولاً ، مع رمز الحالة والرسالة التي تم تعيينها في الطلب ، والتي يمكنك تعديلها عن طريق تعيينstatusCodeوstatusMessageقيم الخصائص:

response.statusCode = 500
response.statusMessage = 'Internal Server Error'

http.IncomingMessage

انhttp.IncomingMessageتم إنشاء الكائن بواسطة:

  • http.Serverعند الاستماع إلىrequestحدث
  • http.ClientRequestعند الاستماع إلىresponseحدث

يمكن استخدامه للوصول إلى الاستجابة:

  • الحالة باستخدام ملفstatusCodeوstatusMessageأساليب
  • رؤوس باستخدام ملفheadersطريقة أوrawHeaders
  • طريقة HTTP باستخدام ملفmethodطريقة
  • إصدار HTTP باستخدام ملفhttpVersionطريقة
  • URL باستخدام ملفurlطريقة
  • المقبس الأساسي باستخدامsocketطريقة

يتم الوصول إلى البيانات باستخدام التدفقات ، منذ ذلك الحينhttp.IncomingMessageتنفذ واجهة الدفق المقروء.

تحميل مجانيكتيب Node.js


المزيد من دروس العقدة: