1
00:00:03,930 --> 00:00:06,395
في المحاضرة السابقة،

2
00:00:06,395 --> 00:00:14,130
تعلمنا أساسيات الشبكات بما في ذلك تفاصيل بروتوكول HTTP.

3
00:00:14,130 --> 00:00:20,805
الآن، سننظر في كيفية استخدام العقدة لإنشاء خادم HTTP.

4
00:00:20,805 --> 00:00:28,420
هذا هو المكان الذي تأتي فيه وحدة HTTP الأساسية المضمنة في العقدة لمساعدتنا.

5
00:00:28,420 --> 00:00:33,820
وبالإضافة إلى ذلك، سوف ننظر في اثنين من وحدات عقدة الأساسية الأخرى التي هي مفيدة

6
00:00:33,820 --> 00:00:40,390
لبناء خادم هتب من استخدام عقدة.

7
00:00:40,390 --> 00:00:42,730
لذا، كيف يمكننا الاستفادة من وحدة عقدة هتب؟

8
00:00:42,730 --> 00:00:50,045
كما ذكرت، وحدة HTTP هي واحدة من الوحدات الأساسية المضمنة في العقدة.

9
00:00:50,045 --> 00:00:53,275
لذلك، هذه هي وحدة الشبكات الأساسية التي تدعم

10
00:00:53,275 --> 00:00:58,475
أساس عالي الأداء لمكدس HTTP.

11
00:00:58,475 --> 00:01:02,440
لذا فإن استخدام الوحدة داخل تطبيق العقدة لدينا يتطلب

12
00:01:02,440 --> 00:01:06,430
منا استيراد الوحدة إلى تطبيقنا.

13
00:01:06,430 --> 00:01:12,190
لذلك هذا هو ما نقوم به من خلال قول const HTTP = تتطلب،

14
00:01:12,190 --> 00:01:15,120
واسم الوحدة النمطية HTTP هناك.

15
00:01:15,120 --> 00:01:17,260
الآن، بمجرد استيراد الوحدة النمطية

16
00:01:17,260 --> 00:01:24,330
، تدعم وحدة HTTP هذه وظيفة CreateServer التي تأخذ،

17
00:01:24,330 --> 00:01:29,500
كمعلمة، وظيفة تعمل

18
00:01:29,500 --> 00:01:32,890
كدالة رد اتصال لوحدة CreateServer

19
00:01:32,890 --> 00:01:37,240
وهذه الوظيفة لديها معلمتين: الطلب والاستجابة.

20
00:01:37,240 --> 00:01:40,120
الطلب هو رسالة الطلب التي تأتي من

21
00:01:40,120 --> 00:01:44,380
جانب العميل ويمكننا تحليل رسالة الطلب ثم استخراج

22
00:01:44,380 --> 00:01:48,010
الكثير من المعلومات من رسالة الطلب واستخدامها لاتخاذ

23
00:01:48,010 --> 00:01:51,850
قرارات حول كيفية بناء رسالة الاستجابة المقابلة لذلك.

24
00:01:51,850 --> 00:01:56,665
يتم إنشاء رسالة الاستجابة باستخدام المعلمة الثانية هنا، الدقة،

25
00:01:56,665 --> 00:02:01,855
والتي يمكننا بناء قيم الرأس المختلفة

26
00:02:01,855 --> 00:02:08,830
لرسالة استجابة HTTP الخاصة بنا وكذلك نص رسالة استجابة HTTP.

27
00:02:08,830 --> 00:02:10,120
الآن، لبدء تشغيل الخادم،

28
00:02:10,120 --> 00:02:11,725
بمجرد إنشاء الخادم،

29
00:02:11,725 --> 00:02:16,030
فإنك تقول server.listen ثم قم بتزويد رقم المنفذ

30
00:02:16,030 --> 00:02:20,420
واسم المضيف للخادم والذي سيبدأ الخادم الخاص بنا.

31
00:02:20,420 --> 00:02:27,520
سنلقي نظرة على بعض التفاصيل في ممارسة الأمثلة التي تلي هذه المحاضرة.

32
00:02:27,520 --> 00:02:32,770
كما ذكرت، تتوفر معلومات رسالة الطلب الواردة

33
00:02:32,770 --> 00:02:38,130
من خلال معلمة req التي تأخذها الدالة في طريقة CreateServer.

34
00:02:38,130 --> 00:02:40,480
لذا، فإن req أو الطلب،

35
00:02:40,480 --> 00:02:42,460
إذا كنت ترغب في إعطائه الاسم الكامل،

36
00:02:42,460 --> 00:02:46,120
يمكنك الاتصال به كطلب ولكن بشكل عام وجدنا أنه في

37
00:02:46,120 --> 00:02:50,425
الأمثلة استخدمنا req لتمثيل رسالة الطلب.

38
00:02:50,425 --> 00:02:57,462
وهو يدعم على خصائص كائن جافا سكريبت مثل الرأس

39
00:02:57,462 --> 00:03:02,225
والجسم وأيضا المعلومات المختلفة التي يمكن استخراجها،

40
00:03:02,225 --> 00:03:09,350
وعنوان URL والطريقة التي تم طلبها من قبل موقع العميل هذا.

41
00:03:09,350 --> 00:03:13,240
وردا على ذلك، يمكنك بناء الاستجابة باستخدام

42
00:03:13,240 --> 00:03:18,424
كائن جافا سكريبت الاستجابة الذي يدعم وظيفة سيثيادر،

43
00:03:18,424 --> 00:03:23,570
وظيفة ستاتوكود التي يمكن تعيينها إلى رمز الحالة من رسالة الاستجابة.

44
00:03:23,570 --> 00:03:26,235
ثم تكتب الرسالة التي تقول

45
00:03:26,235 --> 00:03:29,440
res.write وستنهي الرسالة بقول

46
00:03:29,440 --> 00:03:35,785
res.end والتي تأخذ الجزء الأخير من الجسم للرسالة.

47
00:03:35,785 --> 00:03:40,225
قد يكون النص الأساسي إما نص قياسي أو HTML أو

48
00:03:40,225 --> 00:03:47,369
أي معلومات أخرى تريد إرفاقها داخل نص رسالة الرد تلك.

49
00:03:47,369 --> 00:03:49,780
ولكن بمجرد استدعاء res.end،

50
00:03:49,780 --> 00:03:54,460
يتم إرسال الرد مرة أخرى إلى العميل من خادم HTTP.

51
00:03:54,460 --> 00:03:59,185
اثنين من الوحدات الأساسية الأخرى التي هي مفيدة بالنسبة لنا

52
00:03:59,185 --> 00:04:04,295
عندما نقوم ببناء خادم عقدة HTTP هي وحدة مسار عقدة.

53
00:04:04,295 --> 00:04:09,145
تمكننا وحدة المسار من تحديد المسار إلى ملف ومن ثم

54
00:04:09,145 --> 00:04:14,375
فحص ما إذا كان الملف موجودًا أو فحص مزيد من التفاصيل حول ملف.

55
00:04:14,375 --> 00:04:17,620
على سبيل المثال، امتداد الملف

56
00:04:17,620 --> 00:04:19,185
والاسم وهلم جرا.

57
00:04:19,185 --> 00:04:22,000
لذلك، يمكن استخدام وحدة المسار داخل

58
00:04:22,000 --> 00:04:26,360
تطبيقنا من خلال طلب وحدة المسار كما هو موضح هنا.

59
00:04:26,360 --> 00:04:28,360
وبعد ذلك، يدعم هذا الأساليب،

60
00:04:28,360 --> 00:04:29,990
مثل على سبيل المثال، path.relove،

61
00:04:29,990 --> 00:04:33,940
والتي ستقوم بتحويل مسار نسبي إلى

62
00:04:33,940 --> 00:04:38,620
مسار مطلق أن المسار بأكمله إلى الملف.

63
00:04:38,620 --> 00:04:43,930
يمكنك أيضا التحقق من اسم ملحق الملف عن طريق استدعاء

64
00:04:43,930 --> 00:04:47,830
الدالة path.extname وتوفير مسار الملف

65
00:04:47,830 --> 00:04:52,640
الذي سيتم فحص امتداد اسم الملف.

66
00:04:52,640 --> 00:04:55,870
وبالمثل، فإن وحدة نظام الملفات،

67
00:04:55,870 --> 00:04:57,970
مرة أخرى وحدة أساسية في عقدة،

68
00:04:57,970 --> 00:05:00,670
تمكننا من قراءة وكتابة

69
00:05:00,670 --> 00:05:04,805
الملفات الموجودة في نظام الملفات المحلي على الكمبيوتر.

70
00:05:04,805 --> 00:05:08,725
لذلك يمكن استخدام وحدات نظام الملفات داخل

71
00:05:08,725 --> 00:05:13,480
تطبيق عقدة لدينا من خلال طلب ذلك كما هو موضح هنا.

72
00:05:13,480 --> 00:05:16,765
وبعد ذلك، تدعم وحدات نظام الملفات هذه العديد من الطرق

73
00:05:16,765 --> 00:05:21,460
بما في ذلك طريقة للتحقق مما إذا كان الملف موجودًا في نظام الملفات المحلي أم لا.

74
00:05:21,460 --> 00:05:24,190
لذا فإن fs.exists سيأخذ

75
00:05:24,190 --> 00:05:28,165
FilePath كمعلمة أولى والمعلمة الثانية

76
00:05:28,165 --> 00:05:35,530
هي وظيفة رد اتصال ستعود بمعلمة يمكننا تسميتها كما هي موجودة.

77
00:05:35,530 --> 00:05:38,410
هذه المعلمة، موجودة، ستكون صحيحة إذا كان الملف

78
00:05:38,410 --> 00:05:43,595
موجودًا وستكون false إذا كان الملف غير موجود داخل نظام الملفات المحلي.

79
00:05:43,595 --> 00:05:50,390
وبالمثل، يمكنك القراءة من الملف عن طريق إنشاء دفق قراءة نظرا لمسار الملف.

80
00:05:50,390 --> 00:05:53,585
لذلك يمكنك أن تقول فس.createReadStream

81
00:05:53,585 --> 00:05:58,240
و فيليباث وهذا يمكن أن تكون الأنابيب في رسالة الاستجابة.

82
00:05:58,240 --> 00:06:01,175
لذلك سيتم قراءة الملف من الملف

83
00:06:01,175 --> 00:06:05,290
المعطى من قبل FilePath ومن ثم سيتم وضع المحتويات

84
00:06:05,290 --> 00:06:13,220
في نص رسالة الاستجابة عن طريق استدعاء دالة بالسلاسل كما هو موضح هنا.

85
00:06:13,220 --> 00:06:17,920
لذا، هذه بعض الأمثلة على بعض وحدات العقدة الأساسية التي ستكون

86
00:06:17,920 --> 00:06:23,710
مفيدة جدًا عندما نقوم بإنشاء خادم HTTP باستخدام Node.

87
00:06:23,710 --> 00:06:29,223
الآن، بعد أن نفهم بعض التفاصيل حول خادم HTTP وكيف يمكن بناؤه،

88
00:06:29,223 --> 00:06:30,690
دعنا نذهب إلى التمرين،

89
00:06:30,690 --> 00:06:36,880
حيث سنقوم ببناء خادم HTTP Node بسيط والذي سيخدم أولاً

90
00:06:36,880 --> 00:06:41,950
بعض المعلومات الأساسية ثم بعد ذلك سنقوم بعرض الملفات

91
00:06:41,950 --> 00:06:48,170
الموجودة في مجلد عام في مشروعنا.