HTTP 请求指南

欢迎使用 Finch HTTP 请求指南!本指南将引导您完成在 Finch 应用程序中处理 HTTP 请求的步骤。无论您是经验丰富的开发人员还是刚刚起步,Finch 都提供了一套强大的工具来简化服务器端 Web 应用程序开发。

Request 对象

Request 对象用于在 Finch 应用程序中处理 HTTP 请求。它包含处理请求所需的所有属性。以下是使用示例:

app.get(
  path: '/',
  index: (rq) async {
    return rq.renderString(text: 'Hello World');
  },
);

在 Finch 应用程序中,Request 变量命名为 rq。您可以使用此变量访问 Request 对象的所有属性。

属性:

  • httpRequest:请求的 HttpRequest 对象。
  • session:请求的 HttpSession 对象。
  • cookies:请求的 cookie 列表。
  • stream:请求的流。
  • uri:请求的 URI。
  • response:请求的响应。
  • method:请求的方法。
  • isPost:检查请求是否为 POST 请求。
  • 等等,您可以在 Request 类中找到更多。

读取请求数据

Finch 提供了一种方便的方式来读取请求数据。您可以使用 Request 对象的 data 方法来读取请求数据。以下是使用示例:

以下是读取请求数据的方法列表:

  • get<T>(key, {def, trim = true}):从请求中读取数据。这是一个泛型方法,可以读取任何类型的数据。

这种类型的数据可以从 GETPOST 请求中读取:

app.get(
  path: '/',
  index: (rq) async {
    var name = rq.get<String>('name', def: 'World');
    return rq.renderString(text: 'Hello $name');
  },
);

参数

参数是在 URL 中发送的数据,或者在处理请求时可以使用 addParam 方法将它们添加到请求中。您可以使用 getParam 方法读取它们。例如,如果您有这样的 URL:/users/{id},您可以使用 getParam 方法读取 id 参数。

app.get(
  path: '/users/{id}',
  index: (rq) async {
    var id = rq.getParam('id');
    return rq.renderString(text: 'User ID: $id');
  },
);

设置参数

您可以使用 addParam 方法设置参数。当您想要向请求对象添加一些数据时,这很有用。例如,您可以在身份验证后将用户对象添加到请求对象。

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: 'User ID: $id');
  },
);

注意:

通过使用 addParam 方法,您可以向请求对象添加任何类型的数据。您还可以在模板中使用它们。例如,您可以将用户对象添加到请求对象,并在模板中像这样使用它:{{ user.name }}

模板中不允许使用 future 参数。因此,您可以使用 asyncawait 关键字等待数据。例如:

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: 'User ID: $id');
  },
);