Kotlin使用spring-boot搭建restful api
Kotlin使用spring-boot搭建restful api
jackblues 发表于6个月前
Kotlin使用spring-boot搭建restful api
  • 发表于 6个月前
  • 阅读 37
  • 收藏 3
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: kotlin,spring-boot,gradle

主题

 使用kotlin 语言,加上spring-boot框架,使用gradle构建的restful风格的api应用,顺便熟悉kotlin语法特性

特性

  • restful 风格api举例
  • Token 身份验证,使用过滤器
  • 方法级别权限控制api接口
  • 处理异常,自定义返回结果
  • servlet异步响应
  • model数据处理

代码

http://gitter.com/blueswu/spring-boot-restful   

处理异常自定返回


@RestController
class GreetingController {

    @ExceptionHandler
    @ResponseBody
    fun handleServiceException(req:HttpServletRequest , response:HttpServletResponse , e:Exception ):ErrorResponse  
    {
       var status = HttpStatus.OK.value() 
       status = when(e){
        is AccessDeniedException -> HttpStatus.FORBIDDEN.value()
	else -> status
       }

       if(status != 200){
          val error = ErrorResponse(status,e.getLocalizedMessage())
         response.setStatus(status)
         return error
      }
       else throw e
    }
}

servlet异步响应

  1. 入口处注册EnableAsync
@SpringBootApplication
@EnableAsync
open class Application{
@Bean
@Qualifier(value = "taskExecutor")
open fun  taskExecutor(): Executor  {
        val executor:ThreadPoolTaskExecutor = ThreadPoolTaskExecutor()
        executor.setCorePoolSize(2)
        executor.setMaxPoolSize(2)
        executor.setQueueCapacity(500)
        executor.setThreadNamePrefix("GithubLookup-")
        executor.initialize()
        return executor
 }
}
  1. service处理类方法注册Async
@Service
class LookService {
   @Async("taskExecutor")
   fun  findUsers():CompletableFuture<User> {
      val results:User =User(0,"all users") 
      Thread.sleep(5000L)
       return CompletableFuture.completedFuture(results)
   }
}

方法级别权限控制

  1. 安全设置EnableGlobalMethodSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
open class WebSecurityConfig : WebSecurityConfigurerAdapter() {
}
  1. Controller注册PreAuthorize
@RestController
class GreetingController {
    @GetMapping
    @PreAuthorize("hasRole('ADMIN')")  
        fun getUsers( ) {
    }
}
标签: Spring Boot Kotlin
共有 人打赏支持
粉丝 15
博文 28
码字总数 9662
×
jackblues
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: