[Web] REST-API(5) Response 설명&예제
- ETC../Web
- 2021. 3. 7.
728x90
ResponseApiController
data class UserRequest(
var name: String? = null,
var age: Int? = null,
var email: String? = null,
var address: String? = null,
var phoneNumber: String? = null
)
@RestController
@RequestMapping("/api/response")
class ResponseApiController {
// 1. get 4XX -> Error
// GET http://localhost:8080/api/response?age=10
@GetMapping("")
fun getMapping(@RequestParam age: Int?): ResponseEntity<String> { // 값이 없을 수도 있다 -> ?
return age?.let {
// age not null
if (it < 20) {
return ResponseEntity.status(400).body("age 값은 20보다 커야 합니다.")
}
ResponseEntity.ok("OK")
} ?: kotlin.run {
// age is null
return ResponseEntity.status(400).body("age값이 누락되었습니다.")
}
/*
// 0. age == null -> 400 error
if (age == null){
return ResponseEntity.status(400).body("age값이 누락되었습니다.")
}
// 1. age < 20 -> 400 error
if (age < 20) {
return ResponseEntity.status(400).body("age 값은 20보다 커야 합니다.")
}
return ResponseEntity.ok("OK")
*/
}
// 2. post 200
// post 날아오면 이 메소드 탄다
@PostMapping("")
fun postMapping(@RequestBody userRequest: UserRequest?): ResponseEntity<Any> {
return ResponseEntity.status(200).body(userRequest) //object mapper -> object -> json
}
// 3. put 201
@PutMapping("")
fun putMapping(@RequestBody userRequest: UserRequest?): ResponseEntity<UserRequest> {
// 1. 기존 데이터가 없어서 새로 생성. -> 201
return ResponseEntity.status(HttpStatus.CREATED).body(userRequest)
}
// 4. delete 500 -> Error
// 주소 무조건 맞아야 되기때문에 notNull
@DeleteMapping("/{id}")
fun deleteMapping(@PathVariable id: Int): ResponseEntity<Any> {
return ResponseEntity.status(HttpStatus.BANDWIDTH_LIMIT_EXCEEDED).body(null)
}
}
PageController : 특정 page를 response로 하고 싶은 경우
// 특정한 HtmlPage 내릴때 사용하는 어노테이션(static 폴더 하위)
@Controller
class PageController {
// http://localhost:8080/main
@GetMapping("/main")
fun main(): String { // text "main.html"
println("init main")
return "main.html"
}
// Controller 페이지 관련 컨트롤러에서 Json String 내리거나 할때 붙여줌
@ResponseBody
@GetMapping("/test")
fun response(): UserRequest {
return UserRequest().apply {
this.name = "steve"
}
// return "main.html"
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Kotlin Spring Boot</title>
</head>
<body>
<h1>Kotlin Spring Boot</h1>
</body>
</html>
728x90
'ETC.. > Web' 카테고리의 다른 글
[Web] 리액티브 프로그래밍(Reactive Programming)이란? (0) | 2021.03.06 |
---|---|
[Web] REST-API(3) PUT 설명&예제 (0) | 2021.03.05 |
[Web] REST-API(2) POST 설명&예제 (0) | 2021.03.03 |
[Web] REST-API(1) GET 설명&예제 (0) | 2021.03.02 |
[Web] REST의 기본개념 & "RESTful 하다" 라는 의미 (0) | 2021.02.27 |