海鸥和服务器端Swift

在开发REST API时,关键是选择正确的框架。 Swift有一些很棒的框架:Kitura,Perfect和Vapor。 所有这些框架都有很多功能,支持缓存,数据库以及其他不同的功能。 但是它们太大而又复杂。

我最喜欢的Golang框架是gin-gonic。 小巧,快速,优雅。 除了路由外没有什么-这是主要思想。

我一直在尝试为Swift创建类似的东西。 小巧,简单,并且具有与gin-gonic接近的API意识形态。 所以,这是海鸥

让我们看一些示例。

这是在Seagull上编写的简单REST API服务器。

Seagull的两个主要部分是RouterEngine

路由器是您的API的说明。 如何绘制和处理不同的路线。 Engine是Seagull的心脏,您可以使用Engine启动服务器。

我想,从示例中可以明显看出如何添加新路线。 只需调用Router方法add并传递httpMethod ,相对路径和处理程序即可。

路由器支持组(这是我在gin-gonic API中最喜欢的部分)。 组是一种将具有相似路径前缀和中间件的API分组的方法。

关于处理程序和中间件。 一些样本。

样本从模型定义开始。 所有模型对象都是可编码的

Handler是一个具有两个参数SgRequestSgRequestContext并返回SgResult的函数

Seagull支持中间件链。 中间件处理程序按顺序调用,以将其添加。 中间件可用于日志记录,安全检查或其他目的。 中间件处理程序能够返回将在下一个中间件处理程序或请求处理程序中使用的修改后的请求上下文。

这是一个很好的中间件示例。 我们正在从请求中检索令牌并将其添加到上下文中以供将来使用。 如果找不到令牌,则返回错误。 在这种情况下,链会受到干扰,服务器将返回错误。

您可以在Github上找到完整的Seagull资源。

该项目正在积极开发中,但已准备好进行实验。