kanary:基于kotlin的可扩展restful api web框架 -pg电子游戏网站

引用
原文:
作者:
翻译:vincent

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

download:


kanary是一个用于构建可扩展和富有表现力的的restful api的kotlin web框架,基于,托管在上。kanary是由创建,他是目前的项目负责人。
fun main(args: array) {
val app = kanaryapp()
val server = server()
val userrouter = kanaryrouter()
val usercontroller = usercontroller()
userrouter on "users/" use usercontroller
userrouter.post("new/", usercontroller::createuser)
userrouter.get("details/", usercontroller::retrieveuser)
app.mount(userrouter)
server.handler = apphandler(app)
server.listen(8080)
}

安装

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

maven

包含jcenter作为插件库

   
     jcenter
     jcenter
     https://jcenter.bintray.com/
   

将kanary添加为项目依赖关系

  ...
  
com.iyanuadelekan
kanary
0.9.0
  
  ...

gradle
repositories {
jcenter()
}
dependencies {
compile 'com.iyanuadelekan:kanary:0.9.0'
}

ivy

  

其他

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

特征
  • 表现路由
  • 专注于代码清晰度
  • 支持控制器
  • 包含http助手
  • 完全支持异步中间件
  • 简洁的英语,如“一线”
  • 可用的动作生命周期回调方法
快速开始

这是详细的。

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

通过初始化kanaryapp,创建一个server对象,一个apphandler实例,将该实例设置为服务器的处理程序并启动服务器在指定的端口上侦听,创建一个简单的kanary应用程序。
fun main(args: array) {
  val app = kanaryapp()
  val server = server()
  server.handler = apphandler(app)
  server.listen(8080)
}

创建控制器

控制器是扩展kanarycontroller类的实例。下面的类是一个简单的控制器类,不执行任何操作。
class dummycontroller : kanarycontroller()

创建动作控制器

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

一个动作是一个控制器函数,它将三个参数作为参数:
  • 一个请求的实例(一个可变的请求对象)
  • 一个httpservletrequest的实例(一个不可变的请求对象)
  • httpservletresponse(响应对象)的一个实例
在下面的控制器中显示一个有效的动作:
class usercontroller : kanarycontroller() {
fun createuser(baserequest: request, request: httpservletrequest, response: httpservletresponse) {
// action code goes here
}
}

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

在kanarycontroller中可以声明两个不同的动作生命周期回调。它们分别是:
  • beforeaction 如果声明,则在执行动作之前立即执行
  • afteraction 如果声明,则在执行动作后立即执行
声明这两个回调与在控制器中声明一个函数一样简单:
class usercontroller : kanarycontroller() {
override fun beforeaction(request: httpservletrequest, response: httpservletresponse?) {
println("i execute before anything else!")
}
override fun afteraction(request: httpservletrequest, response: httpservletresponse?) {
println("i execute once an action is completed!")
}
fun createuser(baserequest: request, request: httpservletrequest, response: httpservletresponse) {
// action code goes here
}
}

路由

所有路由由一个或多个指定的路由器完成。路由是kanaryrouter的一个实例:
val userrouter = kanaryrouter()

声明路由路径

userrouter on "users/" use usercontroller //router uses usercontroller to cater for all routes prefixed by '/users'
userrouter.post("new/", usercontroller::createuser) //maps post '/users/new' to the createuser action in usercontroller

以上也可以用:
userrouter.post("users/new/", usercontroller::createuser, usercontroller)

安装路由器到应用程序

单个路由可以挂载到kanaryapp的一个实例上,如下所示:
app.mount(userrouter)

可以随时安装无数路由:
app.mount(routera, routerb, routerc, ..., routern)

中间件

所有的中间件都采用lambda的形式。httpservletrequest的单个可空的实例被传递给添加到应用程序的每个中间件。
app.use { println("i'm middleware!") }
app.use { println("request path info: ${it.pathinfo}") }

可以随时添加多个中间件:
app.use({ println("i'm middleware!") }, { println("request path info: ${it.pathinfo}") } )

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

与kanary捆绑在一起的唯一中间件是“simpleconsolerequestlogger”。它打印出关于向控制台收到的每个请求的简洁信息。
app.use(simpleconsolerequestlogger)

处理请求和响应

处理请求

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

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

响应请求

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

除“sendfile”之外的所有功能都可以用中缀符号(在kanary中编写代码的推荐方式)编写。这样可以写出清晰和表现力强的代码来回应客户。这样就可以向客户端发送纯文本消息:
class usercontroller : kanarycontroller() {
fun createuser(baserequest: request, request: httpservletrequest, response: httpservletresponse) {
response withstatus 201 send "user successfully created!"
baserequest.done()
}
}

packages(包)

dependencies(依赖)
  • (作为应用服务器引擎)
  • (对于json序列化/反序列化)
philosophy(原理)

创建kanary是为了能够用kotlin编程语言实现稳定且非冗长的restful api。

公约与配置

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

road map(路线图)
  • 增加测试
  • 创建大量示例应用程序,演示使用kanary
  • 创建cli工具以支持快速创建kanary应用程序
  • 添加备份加载功能,更改和保存应用程序文件
  • 管理通知邮件
  • 对于那些希望以mvc为导向的方式使用canary的模板引擎系统的实现
  • [*]添加对其他流行应用程序服务器(如tomcat和netty)的支持
  • 大小: 111.1 kb
  • 大小: 9.4 kb
  • 大小: 13.6 kb
  • 大小: 7.4 kb
  • 大小: 39.4 kb
  • 大小: 19 kb
0
1
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • kanary:用于在kotlinjava中构建rest api的极简web框架

  • kanary:kubernetes的canary发布运​​营商 该kubernetes运营商旨在使用haproxy容器作为l4(tcp)负载均衡器来管理canary发布部署操作员安装kubectl apply -f ...简称ky kubectl get kanaryname ag

  • api-kanary.zip,在kotlin/java.kanary中构建restapi的极简web框架,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的数据库通信。通过提取实现并将数据放弃到对象中,api简化了...

  • 语言:english (united states) kanary隐私权政策解析器 web扩展,可获取您的url并将其发送到基于r的文本挖掘工具。

  • kanary:用于构建

  • 标题历史简介 kotlin是jetbrains团队开发的一门基于 jvm 的,现代的、注重工程实用性的静态类型编程语言。kotlin可以编译成java字节码,也可以编译成...语法简单优雅、表现力丰富、抽象扩展方便、代码可重用性好,...

  • keda 在“事件驱动的水平扩展”这一细分领域,跟 kubernetes 项目本身有着更好的集成度,更多的强调可扩展性和接口的设计,显然也有推动这一领域技术标准化的含义。 相关链接: microsoft 发布的 service mesh ...

  • vb语言vb光盘管理系统设计(源代码 系统)本资源系百度网盘分享地址

  • h型脚架疲劳测试机sw16可编辑_零件图_机械工程图_机械三维3d建模图打包下载.zip

  • 笔记.zip

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • 金属材料杂质自动检测设备sw17可编辑_零件图_机械工程图_机械三维3d建模图打包下载.zip

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • stm32单片机fpga毕设电路原理论文报告基于mcs51单片机的微波脉冲功率测试系统本资源系百度网盘分享地址

  • vb语言vb报警管理系统设计(源代码 系统)本资源系百度网盘分享地址

global site tag (gtag.js) - google analytics
网站地图