专栏名称: CSDN
CSDN精彩内容每日推荐。我们关注IT产品研发背后的那些人、技术和故事。
目录
相关文章推荐
大众软件  ·  释放你的创作力:雷孜LaCie ... ·  昨天  
51好读  ›  专栏  ›  CSDN

Kanary:基于Kotlin的可扩展RESTful API Web框架

CSDN  · 公众号  · 科技媒体  · 2017-06-08 08:26

正文

作者 | SeunAdelekan

翻译 | Vincent


【译者注】本文主要讲Kanary的安装和依赖等内容,旨在利用高效的方法帮助工程师和开发人员创建基于微服务。以下为译文



License:Apache 2.0 Download:0.9.0 
Code Climate:1 issues



Kanary是一个用于构建可扩展和富有表现力的的RESTful API的Kotlin Web框架,基于Apache 2.0,托管在Github上。Kanary是由Iyanu Adelekan创建,他是目前的项目负责人。



安装


安装资源包含在com.iyanuadelekan.kanary包中,您可以在您的应用程序中通过Maven,Gradle和Ivy来导入这个包。在应用程序中引入以下代码:


Maven


包含Jcenter作为插件库 



将Kanary添加为项目依赖关系



Gradle



Ivy



其他


对于其他用例,您可以从bintray下载jar


特征


  • 表现路由

  • 专注于代码清晰度

  • 支持控制器

  • 包含HTTP助手

  • 完全支持异步中间件

  • 简洁的英语,如“一线”

  • 可用的动作生命周期回调方法


快速开始


这是详细的[项目包](Packages):https://github.com/SeunAdelekan/Kanary#packages


创建一个Kanary应用程序并启动服务器


通过初始化KanaryApp,创建一个Server对象,一个AppHandler实例,将该实例设置为服务器的处理程序并启动服务器在指定的端口上侦听,创建一个简单的Kanary应用程序。



创建控制器


控制器是扩展KanaryController类的实例。下面的类是一个简单的控制器类,不执行任何操作。



创建动作控制器


虽然上述控制器类是正确的,但通常您需要指定控制器中的动作来路由请求。


一个动作是一个控制器函数,它将三个参数作为参数:


  • 一个请求的实例(一个可变的请求对象)

  • 一个HttpServletRequest的实例(一个不可变的请求对象)

  • HttpServletResponse(响应对象)的一个实例


在下面的控制器中显示一个有效的动作:



动作控制器生命周期的回调


在KanaryController中可以声明两个不同的动作生命周期回调。它们分别是:


  • beforeAction 如果声明,则在执行动作之前立即执行

  • afterAction 如果声明,则在执行动作后立即执行


声明这两个回调与在控制器中声明一个函数一样简单:



路由


所有路由由一个或多个指定的路由器完成。路由是KanaryRouter的一个实例:



声明路由路径



以上也可以用:



安装路由器到应用程序


单个路由可以挂载到KanaryApp的一个实例上,如下所示:



可以随时安装无数路由:



中间件


所有的中间件都采用lambda的形式。HttpServletRequest的单个可空的实例被传递给添加到应用程序的每个中间件。



可以随时添加多个中间件:



重要的是,要注意所有中间件以与主应用程序线程并行的非阻塞方式执行。


捆绑中间件


与Kanary捆绑在一起的唯一中间件是“simpleConsoleRequestLogger”。它打印出关于向控制台收到的每个请求的简洁信息。



处理请求和响应


处理请求


在大多数情况下,请求处理通过创建一个HttpServletRequest来完成一个动作响应。这个HttpServletRequest是Java的一个对象,它是Kanary特定的帮助函数。提供的这些附加功能包括:



一个可变请求对象以请求实例的形式显示。HttpServletRequest请求实现,因此具有类似于传递给HttpServletRequest实例拥有的行为和特征。除了上表所示的功能外,传递的请求实例有: 



响应请求


使用HttpServletResponse将一个动作响应发送给客户端。除了此实例暴露的所有特征和行为之外,还可以使用以下Kanary特定的帮助函数:



除“sendFile”之外的所有功能都可以用中缀符号(在Kanary中编写代码的推荐方式)编写。这样可以写出清晰和表现力强的代码来回应客户。这样就可以向客户端发送纯文本消息:



Packages(包)



Dependencies(依赖)


  • Jetty(作为应用服务器引擎):http://www.eclipse.org/jetty/

  • Jackson-databind (对于JSON序列化/反序列化):https://github.com/FasterXML/jackson-databind/blob/master/README.md


Philosophy(原理)


创建Kanary是为了能够用Kotlin编程语言实现稳定且非冗长的RESTful API。


公约与配置


Kanary旨在利用高效的方法帮助工程师和开发人员创建基于微服务的应用程序。对于这种方法,开发人员不会强制约定。实施应用程序的方法由实施者自行决定。


Road map(路线图)


  • 增加测试

  • 创建大量示例应用程序,演示使用Kanary

  • 创建cli工具以支持快速创建Kanary应用程序

  • 添加备份加载功能,更改和保存应用程序文件

  • 管理通知邮件

  • 对于那些希望以MVC为导向的方式使用Canary的模板引擎系统的实现

  • 添加对其他流行应用程序服务器(如Tomcat和Netty)的支持


更多相关内容及原文所涉链接可点击「阅读原文」查看。