响应状态HTTP SpringBoot Kotlin Api

时间:2017-11-08 13:53:29

标签: api spring-boot kotlin microservices

我在kotlin开始,如果有人可以帮助我,我有一个关于我如何能够返回http状态的问题,如果我返回200 Ok,那么当它返回200 Ok时,返回404 NotFound。

我尝试按照下面的代码进行操作,但它只返回状态200 Ok,在所有情况下

@DeleteMapping("{id}")
fun delete(@PathVariable id: Long): ResponseEntity<Unit> {
    try {
        if (dogRepository.exists(id)) {
            dogRepository.delete(id)
        }
        return ResponseEntity.ok().build()
    } catch (e: Exception) {
        return ResponseEntity.notFound().build()
    }
}

2 个答案:

答案 0 :(得分:0)

你没有在任何地方抛出异常,因此catch块没有被执行。这是更新的代码。


    @DeleteMapping("{id}")
    fun delete(@PathVariable id: Long): ResponseEntity {
        try {
            if (dogRepository.exists(id)) {
                dogRepository.delete(id)
                return ResponseEntity.ok().build()
            }
            return ResponseEntity.notFound().build()
        } catch (e: Exception) {
            return ResponseEntity.notFound().build()
        }
    }

您可以通过curl检查响应标头。例如。 curl -v -X DELETE http://YOUR_API_URL

答案 1 :(得分:0)

我认为其他块可以做到

 @DeleteMapping("{id}") fun delete(@PathVariable id: Long): ResponseEntity<Unit> { 
   try {
             if (dogRepository.exists(id)) { 
                dogRepository.delete(id)
                return ResponseEntity.ok().build()
            } else {
                return ResponseEntity.notFound().build()
            } 
    } catch (e: Exception) { return ResponseEntity.notFound().build() }
 }