前言

上一篇文章请看这里:使用Kotlin搭配Springboot开发RESTFul接口与服务部署

上一篇文章介绍了Kotlin搭配Springboot的开发流程,从搭建项目、ORM、Controller到Swagger集成和docker部署都有,不过大师说我那篇文章太多代码了,吹水太少了,于是我决定再水一篇,介绍一下Web开发中常用的几种操作。

在做完这个简单的系统,Kotlin搭配Springboot给我的感受就是,挺爽的,Springboot本身就是一套傻瓜式的解决方案,要什么功能全部gradle down下来然后注册一下,美滋滋,这就完事了,唯一不足的地方是这些都在Java这个垃圾语言下才能实现,每次用Java都有种吃*的感觉,特别恶心。

写一个简单的data class需要我每个字段配上该死的get和set方法,不知道这是哪个睿智的大佬发明的,看到这里可能有些小伙伴要说可以用Lombok实现自动生成get和set方法,我笑了,被坑过的人都懂。

至于null啊、泛型、值类型引用类型什么鬼乱七八糟的臭**,我就不多说什么了。

PS:喜欢Java的同学别喷,以上只是个人感受,语言只是赚钱的工具,只要钱给够,要我用易语言都没问题 (逃~


好了,可以进入正题了

自定义配置

自定义配置有两种,放在application.yml中,或者是自定义的文件里面,这里我配置比较少,放在application.yml里就行了。

我的配置:

onecat:

然后在configuration包中定义一个类:

import org.springframework.beans.factory.

使用 object 关键字定义的类是静态类,这样其他地方可以直接调用:

OneCatConfig.pageSize

就这么完事了

跨域问题

跨域是Web开发中老生常谈的问题,解决办法很多,我只选最简单的,过个过滤器,在每个相应中加个header,松松

在 filter 包中新建一个过滤器:

@WebFilter(filterName = "CorsFilter")

就这么也完事了,Springboot自动配置真滴方便。

分页

接下来介绍分页,我相信,Springboot生态中一定有很多分页组件,但我并没有用,能自己实现的,就不要用第三方组件~

首先我在 ViewModels 中定义了一个Page类,代码如下:

data 

然后我用了Ktorm的sequence操作,有drop和take这两个方法,映射到SQL语句就是limit操作。

代码如下:

@ApiOperation("获取用户列表")

就是这样,也很简单实现。

这里吐槽一下Ktorm的作者,太坑了,他在GitHub给的例子代码里面关于分页的操作是错的,一开始我被误导了,后面自己改了代码,给原作者的代码填坑 = =  真难

ViewModel

其实刚才介绍分页的时候已经有用到 ViewModel 了,不过Page只是一个单纯data class,这里的ViewModel我要对传入的数据进行进一步的操作。

比如下面的代码,对每种类型下的装备数量和可用装备进行统计。

class EquipmentGroupViewModel(

这样就OK了,一次测试通过,Kotlin好用就完事了

总结

Springboot香是挺香的,Kotlin这语言也挺好用,就是比起C#还是差点感觉,JVM限制了它的发挥,不过也是借着JVM的生态,kotlin才能上位,毕竟和Java可以无缝互调访问,这个体验,大家懂的,以后的Java项目也许都可以慢慢转Kotlin(并不)

只不过这个Ktorm给我有些不太好的体验,小坑啊,论ORM,DjangoORM第一,EFCore第二,能自动迁移实在是方便,你喜欢自己写SQL的灵活,我喜欢直接映射的方便,各取所需吧。

语言之争没有意义,面向工资编程才是真的,有人觉得JavaWeb开发钱多,屁颠屁颠就去学Java,无可厚非,有人喜欢.net core的965和一头秀发,那也是一种追求。至于Python、Rails on Ruby这类脚本语言来Web开发,更是优秀,项目做完钱到手就跑路(我瞎说的哈哈哈,你猜我为啥那么喜欢Python?)

欢迎交流

我整理了一系列的技术文章和资料,在公众号「程序设计实验室」后台回复 linux、flutter、c#、netcore、android、java、python 等可获取相关技术文章和资料,同时有任何问题都可以在公众号后台留言~

c#分页_使用Kotlin搭配Springboot开发RESTFul接口(二)自定义配置、跨域、分页相关推荐

  1. SpringBoot开发Restful接口

    1.说明 基于已经创建好的Spring Boot工程, 开发Restful风格的接口, 并且对外提供HTTP服务. Spring Boot工程创建方式有两种: Maven向导方式:SpringBoot ...

  2. SpringBoot开发Restful风格的接口实现CRUD功能

    一.前言 我们都知道SpringBoot的出现使得在开发web项目的时候变得更加方便.快捷.之前写过一篇文章是如何快速搭建一个springboot项目:SpringBoot入门:使用IDEA和Ecli ...

  3. vue如何配置服务器端跨域_vue开发环境配置跨域,一步到位

    本文要实现的是:使用vue-cli搭建的项目在开发时配置跨域,上线后不做任何任何修改,接口也可以访问 阅读时间需要三分钟 production:产品 生产环境 development:开发 开发环境 ...

  4. 实现uniapp的app和小程序开发中能使用axios进行跨域网络请求,并支持携带cookie

    实现uniapp的app和小程序开发中能使用axios进行跨域网络请求,并支持携带cookie 1-使用npm install axios;命令安装axios 2-新建一个文件夹再建一个.js后缀文件 ...

  5. SpringBoot配置跨域 修改默认json序列化

    SpringBoot配置跨域 修改默认json序列化 修改跨域 addCorsMappings(CorsRegistry registry)方法添加跨域设置的,无法生效,原因是请求经过的先后顺序问题, ...

  6. 技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-4.跨域且传输数据,并优化后端接口

    技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-4.优化后端接口,前端使用axios实现接口功能 技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站 ...

  7. springboot增删改查案例_大神基于SpringBoot开发一个Restful服务,实现增删改查功能...

    前言 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练. ...

  8. Springboot2 D3 SpringBoot开发实用篇 - 热部署 - 配置高级 - 测试

    SpringBoot开发实用篇 ​ 运维实用篇完结以后,开发实用篇采用日更新的形式发布给各位小伙伴,基本上是每天一集,目前已经发布完毕. ​ 开发实用篇中因为牵扯到SpringBoot整合各种各样的技 ...

  9. SpringBoot 配置 跨域支持

    跨域资源共享(CORS,请求协议,请求地址,请求端口三者必须相同才是同一服务器,否则都要进行跨域操作)标准新增了一组 HTTP 首部字段,允许服务器声明哪些源站有权限访问哪些资源.另外,规范要求,对那 ...

最新文章

  1. Apache搭建多个站点方法详解
  2. priorityqueue 的 add和offer方法有区别吗_日常在家安吉白茶应该如何去保存?城市与农村存放的方法有区别吗...
  3. 懒人必备!只需一行代码,就能导入所有的Python库
  4. php 打印错误 display,php错误display及error_reporting的使用
  5. 24安装失败 spss win10_教你win10系统显卡驱动安装失败的解决方法「系统天地」
  6. matlab中sum(w.),matlab中sum
  7. jenkins+phantomjs环境搭建及使用
  8. 印象笔记剪藏html,印象笔记使用剪藏功能的详细操作
  9. ViewPage的使用与介绍
  10. 平面几何----用角平分线逆定理证明阿氏圆定理
  11. 手机edge浏览器无法打开三方应用
  12. 《win10自带的输入法怎样把繁体字模式改成简体字模式》
  13. vulnhub靶场,bulldog1
  14. Gillette!Gillette!
  15. 2020CSP初赛试题答案解析
  16. 采用预训练模型来训练新的模型
  17. HTML中通过js 自定义一个鼠标悬停后立刻显示的Title(附效果图)
  18. js中sort()字母排序和自定义多列排序
  19. 离散数学概论---(8)图论:图的基本概念
  20. 【C语言答案】第四次练习---循环进阶

热门文章

  1. 汇编指令prefix rep:
  2. C++ 学习之函数重载、基于const的重载
  3. 【Boost】boost库中bind的用法
  4. MySQL 备份与主从复制
  5. 字符串匹配算法(一):BF(BruteForce)算法和RK(RabinKarp)算法
  6. 关于JUnit5 你必须知道的(一) JUnit5架构和环境搭建
  7. Mark一下 | 当当优惠码,实付满150减30 | + 荐书
  8. Kafka主题中的分区数越多吞吐量就越高?BULLSHIT!!!
  9. 曹大带我学 Go(5)—— 哪里来的 goexit
  10. Go Modules 的智障版本选择