وحدة URL
يكون استخدام وحدة URL عالية للغاية عند التعامل مع طلبات HTTP لأن الوحدة النمطية تسمح بتحليل عناوين URL ، وتوليد عناوين URL ، وعناوين URL الربط. أولاً ، دعنا نلقي نظرة على مكونات عنوان URL الكامل.
نسخة الكود كما يلي:
HREF
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
مسار مضيف
------------------------------------------------------------------------------------------------------------------------------------
http: // user: pass @ host.com: 8080/p/a/t/h؟ query = string #hash
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
بروتوكول مصادقة اسم مضيف Port PathName Search Hash
------------
استفسار
يمكننا استخدام طريقة .parse لتحويل سلسلة عنوان URL إلى كائن عنوان URL ، كما هو موضح أدناه.
نسخة الكود كما يلي:
url.parse ('http: // user: [email protected]: 8080/p/a/t/h؟ query = string#hash') ؛
/* =>
{البروتوكول: 'http:' ،
المصادقة: "المستخدم: تمرير" ،
المضيف: 'Host.com:8080' ،
الميناء: '8080' ،
اسم المضيف: 'Host.com' ،
التجزئة: '#hash' ،
البحث: '؟ Query = string' ،
الاستعلام: 'Query = string' ،
PathName: '/p/a/t/h' ،
المسار: '/p/a/t/h؟ query = string' ،
HREF: 'http: // user: [email protected]: 8080/p/a/t/h؟ query = string#hash'}
*/
طريقة .parse ليست بالضرورة عنوان URL الكامل. على سبيل المثال ، في وظيفة رد اتصال خادم HTTP ، لا يحتوي request.url على رؤوس بروتوكول وأسماء المجال ، ولكن يمكن أيضًا تحليلها باستخدام طريقة .parse.
نسخة الكود كما يلي:
http.createserver (وظيفة (طلب ، استجابة) {
var tmp = request.url ؛ // => "/foo/bar؟ a = b"
url.parse (TMP) ؛
/* =>
{بروتوكول: فارغة ،
المائل: لاغ ،
المصادقة: خالية ،
المضيف: فارغ ،
الميناء: فارغ ،
اسم المضيف: لاغ ،
التجزئة: فارغة ،
البحث: '؟ a = b' ،
الاستعلام: 'a = b' ،
PathName: '/foo/bar' ،
المسار: '/foo/bar؟ a = b' ،
HREF: '/foo/bar؟ a = b'}
*/
}). الاستماع (80) ؛
تدعم طريقة .parse أيضًا المعلمات الاختيارية من نوع منطقي الثاني والثالث. عندما تكون المعلمة الثانية مساوية للصواب ، فإن حقل الاستعلام في كائن URL الذي تم إرجاعه بواسطة الطريقة لم يعد سلسلة ، ولكن كائن معلمة تم تحويله بواسطة وحدة QueryString. عندما تساوي المعلمة الثالثة صحيحة ، يمكن لهذه الطريقة تحليل عناوين URL بشكل صحيح بدون رؤوس بروتوكول ، مثل //www.example.com/foo/bar.
تتيح طريقة التنسيق ، بدورها ، تحويل كائن عنوان URL إلى سلسلة عنوان URL ، كما هو موضح أدناه.
نسخة الكود كما يلي:
url.format ({
البروتوكول: "HTTP:" ،
المضيف: 'www.example.com' ،
PathName: '/p/a/t/h' ،
البحث: 'Query = String'
}) ؛
/* =>
'http://www.example.com/p/a/t/h؟query=string'
*/
بالإضافة إلى ذلك ، يمكن استخدام طريقة .resolve لصياغة عناوين URL ، كما هو موضح أدناه.
نسخة الكود كما يلي:
url.resolve ('http://www.example.com/foo/bar' ، '../baz') ؛
/* =>
http://www.example.com/baz
*/
سلسلة الاستعلام
يتم استخدام وحدة QueryString لتحويل سلاسل المعلمة عناوين URL وكائنات المعلمة ، كما هو موضح أدناه.
نسخة الكود كما يلي:
QueryString.Parse ('foo = bar & baz = qux & baz = quux & corge') ؛
/* =>
{foo: 'bar' ، baz: ['Qux' ، 'Quux'] ، corge: ''}
*/
QueryString.Stringify ({foo: 'bar' ، baz: ['qux' ، 'quux'] ، corge: ''}) ؛
/* =>
'foo = bar & baz = qux & baz = quux & corge ='
*/