راهنمای درخواست‌های HTTP

به راهنمای درخواست‌های HTTP فینچ خوش آمدید! این راهنما شما را با مراحل مدیریت درخواست‌های HTTP در برنامه فینچ آشنا می‌کند. چه توسعه‌دهنده حرفه‌ای باشید یا تازه‌کار، فینچ ابزارهای قدرتمندی برای ساده‌سازی توسعه برنامه‌های سمت سرور ارائه می‌دهد.

شیء Request

شیء Request برای مدیریت درخواست‌های HTTP در برنامه فینچ شما استفاده می‌شود. این شیء تمام ویژگی‌های لازم برای مدیریت یک درخواست را دارد. در اینجا یک مثال از نحوه استفاده آورده شده است:

app.get(
  path: '/',
  index: (rq) async {
    return rq.renderString(text: 'سلام دنیا');
  },
);

در برنامه فینچ، متغیر درخواست معمولاً با نام rq شناخته می‌شود. می‌توانید از این متغیر برای دسترسی به تمام ویژگی‌های شیء Request استفاده کنید.

ویژگی‌ها:

  • httpRequest: شیء HttpRequest مربوط به درخواست
  • سایر ویژگی‌ها را می‌توانید در کلاس Request بیابید.

خواندن داده‌های درخواست

فینچ راه ساده‌ای برای خواندن داده‌های درخواست فراهم می‌کند. می‌توانید از متد data شیء Request برای خواندن داده‌ها استفاده کنید. در اینجا یک مثال آورده شده است:

لیست متدهای خواندن داده از درخواست:

  • get<T>(key, {def, trim = true}): خواندن داده از درخواست. این متد جنریک است و می‌تواند هر نوع داده‌ای را بخواند.

این نوع داده‌ها را می‌توان از درخواست‌های GET و POST خواند:

app.get(
  path: '/',
  index: (rq) async {
    var name = rq.get<String>('name');
    return rq.renderString(text: 'سلام $name');
  },
);

پارامترها

پارامترها داده‌هایی هستند که در URL ارسال می‌شوند یا هنگام پردازش درخواست می‌توانید آن‌ها را با متد addParam به درخواست اضافه کنید. برای خواندن آن‌ها از متد getParam استفاده کنید. به عنوان مثال، اگر URL شما به صورت /users/{id} باشد، می‌توانید پارامتر id را با متد getParam بخوانید.

app.get(
  path: '/users/{id}',
  index: (rq) async {
    var id = rq.getParam('id');
    return rq.renderString(text: 'شناسه کاربر: $id');
  },
);

تنظیم پارامترها

با استفاده از متد addParam می‌توانید هر نوع داده‌ای را به شیء درخواست اضافه کنید و سپس در قالب‌ها از آن استفاده نمایید. برای مثال، می‌توانید شیء کاربر را به درخواست اضافه کرده و در قالب به صورت {{ user.name }} استفاده کنید:

app.get(
  path: '/users/{id}',
  index: (rq) async {
    var id = rq.getParam('id');
    var user = await User.findById(id);
    rq.addParam('user', user);
    return rq.renderString(text: 'شناسه کاربر: $id');
  },
);

نکته: پارامترهایی که مقدار آن‌ها Future است، در قالب قابل استفاده نیستند. بنابراین باید با استفاده از کلیدواژه‌های async و await ابتدا داده را دریافت و سپس به قالب ارسال کنید.