关于配置和启动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不同地配置服务器:
典型的配置文件如下所示:
然后,我们可以像下面这样设置DB , session和SMPT配置:
let opts = initSchema(fname)
这还会返回启动服务器时将使用的baseURL
, httPort
…。
记录中
我们通常需要两种不同类型的日志:
- 简短的请求日志 ,并提供有关进入我们服务器的所有请求的信息。 这可以使用我们将在“过滤器”部分中讨论的过滤器来完成。
- 记录调试,错误和信息案例。
要启用两种类型的日志记录,我们需要以下内容:
RequestLogFile.location = opts["requestLoggingFileLocation"] as? String ?? ""
LogFile.location = opts["logFileLocation"] as? String ?? ""
路线
有很多方法可以定义此处介绍的路由:
服务器端Swift中带有Codables的类型化路由-完美
编辑说明
medium.com
筛选器
过滤器有两种类型:
- 请求 -这些可用于检查会话,授权,或使用草稿板在请求和响应之间传递数据,以及启动特定任务或创建管道。
- 响应 -这些类型的过滤器可用于过滤或修改响应(例如,修改标头,内容压缩等)以及启动特定任务(例如,记录API的响应)
请求过滤器
以下是请求过滤器的示例:
响应过滤器
以下是响应过滤器的示例:
启动服务器
最后,我们可以如下启动服务器: