关于配置和启动API服务器的实用指南-完美

有很多方法可以配置和启动Perfect Server。 本指南介绍了用会话路由过滤器日志记录配置Perfect服务器的最佳实践。


届会

如果我们计划在服务器端Swift上进行会话,则需要在启动服务器之前对其进行配置。 这是我的示例配置,可以根据您的需求进行自定义:

另外,我们需要调用let sessionDriver = SessionMySQLDriver()来配置会话过滤器,并使用purgeInterval来清除停滞的会话。

CORS

为了使您的API与单页面应用程序(react,vue.js或Angular)一起使用,我们需要配置跨域引用共享(CORS) 。 您可以在此处阅读有关CORS的信息:

跨域资源共享(CORS)

跨域资源共享(CORS)是一种使用其他HTTP标头让用户代理获得…的机制。

developer.mozilla.org

以下是CORS配置的工作示例。 启动服务器之前,我们可以在主目录中调用CORS.configure()

确保定义了所有自定义的HTTP标头和可接受的主机名,否则将不接受Web客户端使用您的api! 👈

CSRF

跨站点请求伪造(CSRF)是一种攻击,它迫使最终用户在当前已通过身份验证的Web应用程序上执行不需要的操作。 CSRF攻击专门针对状态更改请求而不是数据盗窃,因为攻击者无法看到对伪造请求的响应。

您可以在此处阅读有关CSRF的信息:

跨站请求伪造(CSRF)– OWASP

跨站请求伪造(CSRF)是一种攻击,迫使最终用户在Web应用程序上执行不需要的操作…

www.owasp.org

为了避免CSRF攻击,我们需要配置服务器。 以下是可以根据需要自定义的示例。 我们可以在启动服务器之前在主目录中调用CSRF.configure()


模式初始化

由于我们需要会话和数据库连接,因此需要在启动服务器之前对其进行配置。 我们可以将数据库,SMTP,会话等的所有配置都放在JSON并使用它来配置我们的服务器。 我们可以有针对不同环境的配置。 以下示例显示了如何为macOS和Linux不同地配置服务器:

典型的配置文件如下所示:

然后,我们可以像下面这样设置DBsessionSMPT配置:

let opts = initSchema(fname)

这还会返回启动服务器时将使用的baseURLhttPort …。


记录中

我们通常需要两种不同类型的日志:

  • 简短的请求日志 ,并提供有关进入我们服务器的所有请求的信息。 这可以使用我们将在“过滤器”部分中讨论的过滤器来完成。
  • 记录调试,错误和信息案例。

要启用两种类型的日志记录,我们需要以下内容:

 RequestLogFile.location = opts["requestLoggingFileLocation"] as? String ?? "" 
LogFile.location = opts["logFileLocation"] as? String ?? ""

路线

有很多方法可以定义此处介绍的路由:

服务器端Swift中带有Codables的类型化路由-完美

编辑说明

medium.com


筛选器

过滤器有两种类型:

  • 请求 -这些可用于检查会话,授权,或使用草稿板在请求和响应之间传递数据,以及启动特定任务或创建管道。
  • 响应 -这些类型的过滤器可用于过滤或修改响应(例如,修改标头,内容压缩等)以及启动特定任务(例如,记录API的响应)

请求过滤器

以下是请求过滤器的示例:

响应过滤器

以下是响应过滤器的示例:


启动服务器

最后,我们可以如下启动服务器: