مسیریاب net/router
مسیریابی درخواستهای HTTP با پارامتر، گروه و پروندههای ایستا.
واردسازی شبکه.مسیریاب
مسیریاب هر روش و مسیر را به یک تابع گرداننده وصل میکند. این بسته لایهی مسیریابی سرور اچ تی تی پی است: مسیرها را روی یک مسیریاب ثبت میکنید، آن را با اچ تی تی پی.استفاده به سرور میدهید و سرور برای هر درخواست اعزام را صدا میزند، پارامترهای مسیر را در زمینهی درخواست میگذارد و گرداننده را با شناسهی همان زمینه صدا میزند. گرداننده پارامترها را با اچ تی تی پی.پارامتر زمینه میخواند. کارهای مشترک مثل ثبت دسترسی، CORS و سرآیندهای امنیتی را میان افزار فراهم میکند که گرداننده اول صدایش میزند.
الگو بخش به بخش با مسیر سنجیده میشود:
- بخش ثابتی مثل
/notesباید بایت به بایت یکی باشد (پس نام روش و مسیر به بزرگی و کوچکی حروف حساساند)؛ - بخشی که با
:شروع شود پارامتر است:/books/:idمسیر/books/42را باidبرابر42میپذیرد؛ *هر چه بعد از آن بیاید، حتی با اسلش، میپذیرد و پارامتری نمیسازد.
بیشتر نمونههای زیر به جای راهاندازی سرور، اعزام را مستقیم صدا میزنند. این همان جستجویی است که سرور انجام میدهد و دیدن و آزمودن قاعدهها را آسان میکند. اعزام یک تطابق با matched، تابع گردانندهی fn و پارامترها برمیگرداند؛ آن را با آزادسازی تطابق آزاد کنید.
چیزهایی که بیشتر غافلگیر میکنند:
- همهی مسیرها را پیش از
اچ تی تی پی.استفادهثبت کنید. سرور رونوشت خودش را از مسیریاب نگه میدارد و مسیری که بعداً اضافه شود هرگز دیده نمیشود و ۴۰۴ میگیرد. - اسلش پایانی فقط در مسیرهای پارامتردار و ستارهدار پذیرفته میشود.
/users/:nameمسیر/users/sara/را هم میپذیرد، ولی مسیر ثابت/notesبا/notes/جور نمیشود. - پارامترها رمزگشایی نمیشوند.
/tags/open%20sourceمقدارopen%20sourceمیدهد؛ آن را ازاچ تی تی پی.رمزگشایی نشانیبگذرانید. رشتهی پرسمان پیشتر جدا شده و بااچ تی تی پی.پرسمان زمینهخوانده میشود. - پاسخ ۴۰۵ خودکار نیست و هر مسیریاب فقط یک پوشهی ایستا دارد؛ هر دو در ادامه آمدهاند.
مسیرهای یک منبع REST
منبعی مثل یادداشتها معمولاً پنج مسیر دارد: فهرست و ساخت روی مجموعه، و خواندن، جایگزینی و حذف روی یک عضو. هر روش را با تابع خودش ثبت کنید (دریافت، ارسال، قراردادن، حذف و برای ویرایش بخشی وصله) و شناسهی عضو را با دریافت پارامتر بخوانید. مسیری که با هیچ الگویی جور نشود، یا روشی که مسیری ندارد، matched را نادرست میکند و سرور با ۴۰۴ پاسخ میدهد.
واردسازی شبکه.اچ تی تی پی
واردسازی شبکه.مسیریاب
تابع فهرست یادداشتها(زمینه: صحیح۶۴): اچ تی تی پی.متن(زمینه، "همه یادداشتها") پایان
تابع ساخت یادداشت(زمینه: صحیح۶۴): اچ تی تی پی.متن(زمینه، "ساخته شد") پایان
تابع نمایش یادداشت(زمینه: صحیح۶۴): اچ تی تی پی.متن(زمینه، "یک یادداشت") پایان
تابع ویرایش یادداشت(زمینه: صحیح۶۴): اچ تی تی پی.متن(زمینه، "ویرایش شد") پایان
تابع حذف یادداشت(زمینه: صحیح۶۴): اچ تی تی پی.متن(زمینه، "حذف شد") پایان
تابع نام رسیدگیکننده(تابعک: صحیح۶۴): رشته:
اگر تابعک == فهرست یادداشتها: برگشت "فهرست یادداشتها" پایان
اگر تابعک == ساخت یادداشت: برگشت "ساخت یادداشت" پایان
اگر تابعک == نمایش یادداشت: برگشت "نمایش یادداشت" پایان
اگر تابعک == ویرایش یادداشت: برگشت "ویرایش یادداشت" پایان
اگر تابعک == حذف یادداشت: برگشت "حذف یادداشت" پایان
برگشت "?"
پایان
تابع امتحان درخواست(م: مسیریاب.مسیریاب، روش: رشته، مسیر: رشته):
ناپایا ت := مسیریاب.اعزام(م، روش، مسیر)
اگر ت.پیدا شد:
شناسه := مسیریاب.دریافت پارامتر(ت، "id")
اگر شناسه.طول() > ۰:
سرچاپ روش، مسیر، "->"، نام رسیدگیکننده(ت.گرداننده)، "با شناسه"، شناسه
وگرنه:
سرچاپ روش، مسیر، "->"، نام رسیدگیکننده(ت.گرداننده)
پایان
وگرنه:
سرچاپ روش، مسیر، "-> ۴۰۴"
پایان
مسیریاب.آزادسازی تطابق(ت)
پایان
تابع ریشه:
ناپایا م := مسیریاب.مسیریاب جدید()
مسیریاب.دریافت(م، "/notes"، فهرست یادداشتها)
مسیریاب.ارسال(م، "/notes"، ساخت یادداشت)
مسیریاب.دریافت(م، "/notes/:id"، نمایش یادداشت)
مسیریاب.قراردادن(م، "/notes/:id"، ویرایش یادداشت)
مسیریاب.حذف(م، "/notes/:id"، حذف یادداشت)
امتحان درخواست(م، "GET"، "/notes")
امتحان درخواست(م، "POST"، "/notes")
امتحان درخواست(م، "GET"، "/notes/17")
امتحان درخواست(م، "PUT"، "/notes/17")
امتحان درخواست(م، "DELETE"، "/notes/17")
امتحان درخواست(م، "DELETE"، "/notes")
امتحان درخواست(م، "GET"، "/notes/17/comments")
پایانهر پارامتر دقیقاً با یک بخش مسیر جور میشود: /notes/17/comments به /notes/:id نمیرسد. برای منبعهای تودرتو الگوی جدا بگذارید، مثل /notes/:id/comments.
کدام مسیر برنده است
وقتی چند الگو با یک مسیر جور شوند، بخش ثابت بر پارامتر و پارامتر بر * پیش است؛ پس /users/me به گردانندهی خودش میرسد، با اینکه /users/:name زودتر ثبت شده است. میان دو مسیر ستارهدار، آن که زودتر ثبت شده برنده است؛ پس مسیر همهگیر /* را آخر و پس از مسیرهای دقیقتری مثل /assets/* ثبت کنید. خروجی سه قاعدهی دیگر را هم نشان میدهد: /users/sara/ با اسلش پایانی باز هم به مسیر پارامتردار میرسد، /users/me/ از مسیر ثابت جا میماند و با name برابر me به /users/:name میرسد، و درخواست HEAD به مسیر GET برمیگردد.
واردسازی شبکه.اچ تی تی پی
واردسازی شبکه.مسیریاب
تابع خودم(زمینه: صحیح۶۴): اچ تی تی پی.متن(زمینه، "خودم") پایان
تابع کاربر(زمینه: صحیح۶۴): اچ تی تی پی.متن(زمینه، "کاربر") پایان
تابع داراییها(زمینه: صحیح۶۴): اچ تی تی پی.متن(زمینه، "داراییها") پایان
تابع صفحه عمومی(زمینه: صحیح۶۴): اچ تی تی پی.متن(زمینه، "صفحه") پایان
تابع نام رسیدگیکننده(تابعک: صحیح۶۴): رشته:
اگر تابعک == خودم: برگشت "خودم" پایان
اگر تابعک == کاربر: برگشت "کاربر" پایان
اگر تابعک == داراییها: برگشت "داراییها" پایان
اگر تابعک == صفحه عمومی: برگشت "صفحه" پایان
برگشت "?"
پایان
تابع نشان بده(م: مسیریاب.مسیریاب، روش: رشته، مسیر: رشته):
ناپایا ت := مسیریاب.اعزام(م، روش، مسیر)
اگر ت.پیدا شد:
سرچاپ روش، مسیر، "->"، نام رسیدگیکننده(ت.گرداننده)، ت.پارامترها.اقلام.طول()، "پارامتر"
وگرنه:
سرچاپ روش، مسیر، "-> مسیری نیست"
پایان
مسیریاب.آزادسازی تطابق(ت)
پایان
تابع ریشه:
ناپایا م := مسیریاب.مسیریاب جدید()
مسیریاب.دریافت(م، "/assets/*"، داراییها)
مسیریاب.دریافت(م، "/users/:name"، کاربر)
مسیریاب.دریافت(م، "/users/me"، خودم)
مسیریاب.دریافت(م، "/*"، صفحه عمومی)
نشان بده(م، "GET"، "/users/me")
نشان بده(م، "GET"، "/users/sara")
نشان بده(م، "GET"، "/users/sara/")
نشان بده(م، "GET"، "/users/me/")
نشان بده(م، "GET"، "/assets/css/site.css")
نشان بده(م، "GET"، "/about")
نشان بده(م، "HEAD"، "/users/sara")
نشان بده(م، "POST"، "/users/sara")
پایان۴۰۴ یا ۴۰۵: گفتن اینکه چه مجاز است
درخواستی که مسیرش وجود دارد ولی روشش نادرست است باید 405 Method Not Allowed و سرآیند Allow بگیرد، نه ۴۰۴. مسیریاب این کار را خودش نمیکند، اما ساختنش روی اعزام آسان است: وقتی درخواست جور نشد، همان مسیر را با روشهای دیگر امتحان کنید و آنهایی را که جور میشوند فهرست کنید.
واردسازی شبکه.اچ تی تی پی
واردسازی شبکه.مسیریاب
تابع فهرست سفارشها(زمینه: صحیح۶۴): اچ تی تی پی.متن(زمینه، "سفارشها") پایان
تابع ثبت سفارش(زمینه: صحیح۶۴): اچ تی تی پی.متن(زمینه، "ثبت شد") پایان
تابع روشهای مجاز(م: مسیریاب.مسیریاب، مسیر: رشته): رشته:
روشها := ["GET"، "POST"، "PUT"، "PATCH"، "DELETE"]
ناپایا خروجی := ""
هر ر در روشها:
ناپایا یافته := مسیریاب.اعزام(م، ر، مسیر)
اگر یافته.پیدا شد:
اگر خروجی.طول() > ۰: خروجی += ", " پایان
خروجی += ر
پایان
مسیریاب.آزادسازی تطابق(یافته)
پایان
برگشت خروجی
پایان
تابع پاسخ بده(م: مسیریاب.مسیریاب، روش: رشته، مسیر: رشته):
ناپایا ت := مسیریاب.اعزام(م، روش، مسیر)
اگر ت.پیدا شد:
سرچاپ روش، مسیر، "-> ۲۰۰"
وگرنه:
مجاز := روشهای مجاز(م، مسیر)
اگر مجاز.طول() > ۰:
سرچاپ روش، مسیر، "-> ۴۰۵، Allow:"، مجاز
وگرنه:
سرچاپ روش، مسیر، "-> ۴۰۴"
پایان
پایان
مسیریاب.آزادسازی تطابق(ت)
پایان
تابع ریشه:
ناپایا م := مسیریاب.مسیریاب جدید()
مسیریاب.دریافت(م، "/orders"، فهرست سفارشها)
مسیریاب.ارسال(م، "/orders"، ثبت سفارش)
پاسخ بده(م، "GET"، "/orders")
پاسخ بده(م، "DELETE"، "/orders")
پاسخ بده(م، "GET"، "/invoices")
پایانگروه کردن مسیرها زیر یک پیشوند
گروه مسیری را زیر یک پیشوند مشترک ثبت میکند و نسخههای API را از هم جدا نگه میدارد: /api/v1/users و /api/v2/users میتوانند کنار هم باشند و به گردانندههای متفاوت برسند. پیشوند را در یک متغیر نگه دارید تا تغییر نام نسخه در یک جا انجام شود. مسیرهای ثبتشده در routes مسیریاب هستند؛ برای چاپ جدول مسیرها هنگام راهاندازی به کار میآید.
واردسازی شبکه.اچ تی تی پی
واردسازی شبکه.مسیریاب
تابع کاربران نسخه۱(زمینه: صحیح۶۴): اچ تی تی پی.جیسون(زمینه، "[\"ali\"]") پایان
تابع کاربران نسخه۲(زمینه: صحیح۶۴): اچ تی تی پی.جیسون(زمینه، "{\"users\":[\"ali\"]}") پایان
تابع کاربر نسخه۲(زمینه: صحیح۶۴): اچ تی تی پی.جیسون(زمینه، "{}") پایان
تابع ریشه:
ناپایا م := مسیریاب.مسیریاب جدید()
ن۱ := "/api/v1"
ن۲ := "/api/v2"
مسیریاب.گروه(م، ن۱، "GET"، "/users"، کاربران نسخه۱)
مسیریاب.گروه(م، ن۲، "GET"، "/users"، کاربران نسخه۲)
مسیریاب.گروه(م، ن۲، "GET"، "/users/:id"، کاربر نسخه۲)
هر مس در م.مسیرها:
سرچاپ مس.روش، مس.الگو
پایان
ناپایا ت := مسیریاب.اعزام(م، "GET"، "/api/v2/users/5")
سرچاپ ت.گرداننده == کاربر نسخه۲، مسیریاب.دریافت پارامتر(ت، "id")
مسیریاب.آزادسازی تطابق(ت)
ناپایا قدیمی := مسیریاب.اعزام(م، "GET"، "/api/v1/users")
سرچاپ قدیمی.گرداننده == کاربران نسخه۱
مسیریاب.آزادسازی تطابق(قدیمی)
پایانپارامترهای مسیر در سرور در حال اجرا
درون گرداننده پارامترها از زمینهی درخواست میآیند: اچ تی تی پی.پارامتر زمینه(زمینه، "slug") یکی را میخواند و اچ تی تی پی.پرسمان زمینه(زمینه، "page") رشتهی پرسمان را، که سرور پیش از مسیریابی از مسیر جدا میکند. برنامهی زیر یک وبلاگ و صفحهی برچسب را سرو میکند و دو قاعدهی سرور را از بالای صفحه نشان میدهد: برچسب تا وقتی از اچ تی تی پی.رمزگشایی نشانی نگذرد به شکل درصدی میماند، و /late که پس از اچ تی تی پی.استفاده ثبت شده ۴۰۴ میگیرد.
واردسازی شبکه.اچ تی تی پی
واردسازی شبکه.مسیریاب
تابع نمایش برچسب(زمینه: صحیح۶۴):
خام := اچ تی تی پی.پارامتر(زمینه، "tag")
اچ تی تی پی.متن(زمینه، "raw=" + خام + " decoded=" + اچ تی تی پی.رمزگشایی نشانی(خام))
پایان
تابع نمایش نوشته(زمینه: صحیح۶۴):
اچ تی تی پی.جیسون(زمینه، "{\"post\":\"" + اچ تی تی پی.پارامتر(زمینه، "slug") + "\",\"page\":\"" + اچ تی تی پی.پرسمان(زمینه، "page") + "\"}")
پایان
تابع دیرهنگام(زمینه: صحیح۶۴): اچ تی تی پی.متن(زمینه، "late") پایان
تابع بگیر(مسیر: رشته):
پاسخ := اچ تی تی پی.دریافت("http://127.0.0.1:18589" + مسیر)
سرچاپ مسیر، پاسخ.وضعیت، پاسخ.بدنه
پایان
تابع ریشه:
ناپایا م := مسیریاب.مسیریاب جدید()
مسیریاب.دریافت(م، "/tags/:tag"، نمایش برچسب)
مسیریاب.دریافت(م، "/blog/:slug"، نمایش نوشته)
ناپایا س := اچ تی تی پی.سرور جدید(۱۸۵۸۹)
اچ تی تی پی.تنظیم میزبان(س، "127.0.0.1")
اچ تی تی پی.استفاده(س، م)
مسیریاب.دریافت(م، "/late"، دیرهنگام)
اگر وارونه اچ تی تی پی.اجرا در پس زمینه(س):
سرچاپ "درگاه ۱۸۵۸۹ گرفته است"
برگشت ۱
پایان
بگیر("/tags/open%20source")
بگیر("/blog/hello-salam?page=2")
بگیر("/late")
برگشت ۰
پایانفرستادن یک پوشه کنار API
ایستا(مسیریاب، پیشوند، پوشه) پروندههای یک پوشه را برای مسیرهایی که با پیشوند شروع میشوند میفرستد، با Content-Type از مایم و index.html برای پوشه. پوشهای که بدون اسلش پایانی خواسته شود با ۳۰۱ به نشانی اسلشدار فرستاده میشود و .. نمیتواند از پوشه بیرون برود. پروندههای ایستا پیش از مسیرها و برای هر روشی بررسی میشوند و مسیری که پرونده ندارد به مسیرها و سپس به ۴۰۴ میرسد؛ پس /api/status باز هم به گردانندهی خودش میرسد. برنامه یک پوشهی کوچک public مینویسد، آن را روی 127.0.0.1 میفرستد و چهار مسیر را میگیرد.
واردسازی شبکه.اچ تی تی پی
واردسازی شبکه.مسیریاب
واردسازی سیستم عامل
تابع وضعیت(زمینه: صحیح۶۴): اچ تی تی پی.جیسون(زمینه، "{\"ok\":true}") پایان
تابع بگیر(مسیر: رشته):
پاسخ := اچ تی تی پی.دریافت("http://127.0.0.1:18588" + مسیر)
سرچاپ مسیر، پاسخ.وضعیت، اچ تی تی پی.دریافت سرصفحه(پاسخ، "Content-Type")
پایان
تابع ریشه:
سیستم عامل.ساخت پوشه ها("public/css")
سیستم عامل.نوشتن پرونده("public/index.html"، "<h1>سلام</h1>")
سیستم عامل.نوشتن پرونده("public/css/site.css"، "h1 { color: teal }")
ناپایا م := مسیریاب.مسیریاب جدید()
مسیریاب.دریافت(م، "/api/status"، وضعیت)
مسیریاب.ایستا(م، "/"، "public")
ناپایا س := اچ تی تی پی.سرور جدید(۱۸۵۸۸)
اچ تی تی پی.تنظیم میزبان(س، "127.0.0.1")
اچ تی تی پی.استفاده(س، م)
اگر وارونه اچ تی تی پی.اجرا در پس زمینه(س):
سرچاپ "درگاه ۱۸۵۸۸ گرفته است"
برگشت ۱
پایان
بگیر("/")
بگیر("/css/site.css")
بگیر("/api/status")
بگیر("/missing.png")
سیستم عامل.حذف همه("public")
برگشت ۰
پایانپیشوند یک پیشوند رشتهای ساده است. با / هر مسیر اول روی دیسک جستجو میشود که برای سایت کوچک اشکالی ندارد؛ برای یک API بزرگ پروندهها را زیر پیشوند خودشان مثل /static بگذارید. هر مسیریاب یک پوشهی ایستا دارد و فراخوانی دوبارهی ایستا جای قبلی را میگیرد. فعال سازی فهرست پوشه باعث میشود پوشهای که index.html ندارد به جای ۴۰۴ فهرست HTML پروندههایش را برگرداند.
گونهها
پارامتر Param
ساختار پارامتر| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| کلید | key | رشته = "" | نام، بدون :. |
| مقدار | value | رشته = "" | مقدار از مسیر درخواست. |
واردسازی شبکه.مسیریاب
ناپایا شمار := ۰
تابع فهرست(_زمینه: صحیح۶۴):
شمار += ۱
پایان
تابع نمایش(_زمینه: صحیح۶۴):
شمار += ۱
پایان
تابع ساختن(_زمینه: صحیح۶۴):
شمار += ۱
پایان
تابع ریشه:
ناپایا م := مسیریاب.مسیریاب جدید()
مسیریاب.دریافت(م، "/books"، فهرست)
مسیریاب.دریافت(م، "/books/:id"، نمایش)
مسیریاب.ارسال(م، "/books"، ساختن)
مسیریاب.قراردادن(م، "/books/:id"، ساختن)
مسیریاب.حذف(م، "/books/:id"، ساختن)
مسیریاب.وصله(م، "/books/:id"، ساختن)
مسیریاب.سر(م، "/books"، فهرست)
مسیریاب.گزینه ها(م، "/books"، فهرست)
مسیریاب.روش(م، "PURGE"، "/cache"، ساختن)
مسیریاب.روش(م، "GET"، "/files/*"، نمایش)
مسیریاب.گروه(م، "/api/v1"، "GET"، "/users/:uid/books/:id"، نمایش)
مسیریاب.ایستا(م، "/static"، "public")
مسیریاب.فعال سازی فهرست پوشه(م)
سرچاپ م.مسیرها.طول()، م.ایستا فعال، م.پیشوند ایستا، م.فهرست ایستا
ناپایا ت := مسیریاب.اعزام(م، "GET"، "/books/42")
سرچاپ ت.پیدا شد، ت.گرداننده == نمایش، مسیریاب.دریافت پارامتر(ت، "id")
مسیریاب.آزادسازی تطابق(ت)
ناپایا ت۲ := مسیریاب.اعزام(م، "GET"، "/api/v1/users/7/books/3")
سرچاپ ت۲.پیدا شد، ت۲.پارامترها.اقلام.طول()، ت۲.پارامترها.اقلام[۰].کلید، ت۲.پارامترها.اقلام[۰].مقدار
مسیریاب.آزادسازی تطابق(ت۲)
ناپایا ت۳ := مسیریاب.اعزام(م، "GET"، "/files/a/b.txt")
سرچاپ ت۳.پیدا شد، ت۳.پارامترها.اقلام.طول()
مسیریاب.آزادسازی تطابق(ت۳)
ناپایا ت۴ := مسیریاب.اعزام(م، "DELETE"، "/books")
سرچاپ ت۴.پیدا شد، م.مسیرها[۰].روش، م.مسیرها[۰].الگو
مسیریاب.آزادسازی تطابق(ت۴)
پایانپارامترها ParamList
ساختار پارامترها| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| اقلام | items | وکتور<پارامتر> | پارامترها. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
مسیر مسیریابی Route
ساختار مسیر مسیریابی| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| روش | method | رشته = "" | روش HTTP. |
| الگو | pattern | رشته = "" | الگوی مسیر. |
| گرداننده | fn | صحیح۶۴ = 0 | تابع گرداننده. |
| شناسه روش | mid | صحیح = 0 | شناسهی روش. |
| نوع الگو | spec | صحیح = 0 | نوع الگو: صفر ثابت، ۱ با پارامتر، ۲ با *. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
مسیریاب Router
ساختار مسیریاب| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| مسیرها | routes | وکتور<مسیر مسیریابی> | مسیرهای ثبتشده. |
| پیشوند ایستا | static_prefix | رشته = "" | پیشوند مسیر پروندههای ایستا. |
| پوشه ایستا | static_dir | رشته = "" | پوشهی پروندههای ایستا. |
| ایستا فعال | has_static | منطقی = نادرست | پروندههای ایستا فعال است. |
| فهرست ایستا | static_listing | منطقی = نادرست | فهرست محتوای پوشهها نشان داده شود. |
| مدیر پیشفرض | fallback | صحیح۶۴ = 0 | مدیری که وقتی هیچ مسیری مطابقت نکند اجرا میشود؛ صفر یعنی مدیری نیست و سرور ۴۰۴ میدهد. |
| جدول نمایه | idx | وکتور<صحیح> | جدول درهم مسیرهای ثابت. |
| پوشش نمایه | idx_mask | صحیح = 0 | اندازهی جدول منهای یک. |
| شمار ثابتها | n_literal | صحیح = 0 | تعداد مسیرهای ثابت. |
| شمار پویاها | n_dynamic | صحیح = 0 | تعداد مسیرهای دارای پارامتر. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
تطابق Match
ساختار تطابق| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| پیدا شد | matched | منطقی = نادرست | مسیری پیدا شد. |
| گرداننده | fn | صحیح۶۴ = 0 | تابع گردانندهی مسیر. |
| پارامترها | params | پارامترها | پارامترهای مسیر. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
تابعها
مسیریاب جدید NewRouter
تابع مسیریاب جدید(): مسیریابنمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
دریافت Get
تابع دریافت(r &: مسیریاب، path: رشته، fn: صحیح۶۴)نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
ارسال Post
تابع ارسال(r &: مسیریاب، path: رشته، fn: صحیح۶۴)نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
قراردادن Put
تابع قراردادن(r &: مسیریاب، path: رشته، fn: صحیح۶۴)نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
حذف Delete
تابع حذف(r &: مسیریاب، path: رشته، fn: صحیح۶۴)نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
وصله Patch
تابع وصله(r &: مسیریاب، path: رشته، fn: صحیح۶۴)نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
سر Head
تابع سر(r &: مسیریاب، path: رشته، fn: صحیح۶۴)نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
گزینه ها Options
تابع گزینه ها(r &: مسیریاب، path: رشته، fn: صحیح۶۴)نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
روش Method
تابع روش(r &: مسیریاب، method: رشته، path: رشته، fn: صحیح۶۴)PROPFIND. نام روش به بزرگی و کوچکی حروف حساس است.نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
گروه Group
تابع گروه(r &: مسیریاب، prefix: رشته، method: رشته، path: رشته، fn: صحیح۶۴)/api/v1 ثبت میکند؛ همان ثبت پیشوند + مسیر با آن روش است.نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
ایستا Static
تابع ایستا(r &: مسیریاب، prefix: رشته، dir: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
فعال سازی فهرست پوشه EnableListing
تابع فعال سازی فهرست پوشه(r &: مسیریاب)index.html، فهرست پروندهها را نشان میدهد.نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
تنظیم مدیر پیشفرض SetFallback
تابع تنظیم مدیر پیشفرض(r &: مسیریاب، fn: صحیح۶۴)Host انتخاب میکند، مانند net/httpd، با همین پشت یک مسیریاب مینشیند.واردسازی شبکه.اچ تی تی پی
واردسازی شبکه.مسیریاب
تابع خانه(ز: صحیح۶۴):
اچ تی تی پی.متن(ز، "خانه")
پایان
تابع بقیه(ز: صحیح۶۴):
اچ تی تی پی.تنظیم وضعیت(ز، ۲۰۲)
اچ تی تی پی.متن(ز، "رسید " + اچ تی تی پی.روش(ز) + " " + اچ تی تی پی.مسیر(ز))
پایان
تابع ریشه:
ناپایا م := مسیریاب.مسیریاب جدید()
سرچاپ م.مدیر پیشفرض
مسیریاب.دریافت(م، "/"، خانه)
مسیریاب.تنظیم مدیر پیشفرض(م، بقیه)
سرچاپ م.مدیر پیشفرض == بقیه
ناپایا س := اچ تی تی پی.سرور جدید(۱۹۶۲۵)
اچ تی تی پی.استفاده(س، م)
سرچاپ اچ تی تی پی.اجرا در پس زمینه(س)
الف := اچ تی تی پی.دریافت("http://127.0.0.1:19625/")
سرچاپ اچ تی تی پی.وضعیت(الف)، اچ تی تی پی.بدنه(الف)
ب := اچ تی تی پی.دریافت("http://127.0.0.1:19625/unknown/page")
سرچاپ اچ تی تی پی.وضعیت(ب)، اچ تی تی پی.بدنه(ب)
پایاندریافت پارامتر ParamGet
تابع دریافت پارامتر(m: تطابق، key: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
اعزام Dispatch
تابع اعزام(r: مسیریاب، method: رشته، path: رشته): تطابقنمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam
آزادسازی تطابق FreeMatch
تابع آزادسازی تطابق(m &: تطابق)نمونهی این مورد همراه با موارد بالاتر آمده است: net-router-Dispatch.salam