服务器和请求状态

04-state.md
commit - 3f00bc7f7b7dd93a7f684add8a4ab856f27dbf56 - 2020.10.24

服务器状态

到目前为止,示例中的端点(Endpoint)都是简单的无状态函数,将请求处理为响应。但是对于任何正式的应用程序,我们需要能够在某个地方保持某种状态。在实际的应用程序中,我们需要有一个地方来存储会话(session)、数据库连接池、配置等内容,而我们不希望使用全局变量来实现这一点。

Tide 为我们提供了服务器状态来执行上述操作。如果你查看服务器定义的 Server 结构体,就会发现它有一个名称为 State 的泛型参数。因为到目前为止,我们一直使用 Server::new 工厂方法创建服务器结构体 Server,所以我们一直使用的是 Server<()>。但是我们可以在创建服务器时,传入自定义的状态结构体或状态枚举。然后,状态结构体或状态枚举将通过请求结构体 Request 传递到所有端点(Endpoint)处理程序。