[Web] REST-API(2) POST 설명&예제
- ETC.. / Web
- 2021. 3. 3.
728x90

package com.example.mvc.controller.post
import com.example.mvc.model.http.UserRequest
import org.springframework.web.bind.annotation.*
@RestController
@RequestMapping("/api")
class PostApiController {
//현대 방식
@PostMapping("/post-mapping")
fun postMapping(): String {
return "post-mapping"
}
//과거 방식
@RequestMapping(method = [RequestMethod.POST], path = ["request-mapping"]) // 주소 외부 노출, url 받는 형식 다르면 같아도 충돌 안남
fun requestMapping(): String {
return "request-mapping"
}
//object mapper
//json -> object
//object -> json
@PostMapping("/post-mapping/object")
fun postMappingObject(@RequestBody userRequest: UserRequest): UserRequest {
//json -> object
println(userRequest)
//UserRequest(name=Steve, age=10, email=steve@gmail.com, address=도쿄)
return userRequest //object -> json
}
}
package com.example.mvc.model.http
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.PropertyNamingStrategy
import com.fasterxml.jackson.databind.annotation.JsonNaming
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class) //해당 클래스는 snake case로 동작 클래스 지정(한번에)
data class UserRequest(
// Default = null
var name: String? = null,
var age: Int? = null,
var email: String? = null,
var address: String? = null,
// @JsonProperty("phone_number") -> camel , snake case 이름 맞춰준다
var phoneNumber: String? = null // 대부분 REST에서는 snake case 가 많다 phone_number(요청) -> 이름 불일치
// 그외 이름 맞추는 다른 방법(Naming Convention)
// 1. OjbectMapper를 Bean으로 만들어 줄 때 규칙 설정
// 2. resources의 application.properties에 ObjectMapper가 동작할 Naming 규칙 설정
)
728x90
'ETC.. > Web' 카테고리의 다른 글
[Web] REST-API(5) Response 설명&예제 (0) | 2021.03.07 |
---|---|
[Web] 리액티브 프로그래밍(Reactive Programming)이란? (0) | 2021.03.06 |
[Web] REST-API(3) PUT 설명&예제 (0) | 2021.03.05 |
[Web] REST-API(1) GET 설명&예제 (0) | 2021.03.02 |
[Web] REST의 기본개념 & "RESTful 하다" 라는 의미 (0) | 2021.02.27 |