我在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()
}
}
答案 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() }
}