Controller
λ°μ΄ν°λ₯Ό μ λ¬ν Mapping μ λ³΄κ° μ μ₯λλ ν΄λμ€. ( λ‘μ§μ²λ¦¬λ₯Ό λ΄λΉ )
μ΄λ»κ² μ²λ¦¬ ν μ§ μλ €μ£Όλ μν λ‘ μΌμ’ μ Modelκ³Ό Viewμ Proxyμν
jspλ ν νλ¦Ώμ ν΅ν΄ κ²°κ³Όλ¬Όμ νΉμ κ²½λ‘λ‘ μ°κ²° μμΌμ£Όκ±°λ apiμ κ°μ΄ νΉμ λ°μ΄ν°λ₯Ό μ λ¬ν΄μ£Όλ μν
μ΄λ
Έν
μ΄μ
@Controller
ν΄λΉ ν΄λμ€λ₯Ό controllerλ‘ μΈμνκ² ν΄μ£Όλ μ΄λ Έν μ΄μ
@RequestMapping
ν΄λΌμ΄μΈνΈλ‘λΆν° μμ²(request)μ΄ λ€μ΄μμλ μ΄λ€ μμ²(uri)μΈμ§ ꡬλΆνμ¬ μ²λ¦¬νκΈ° μν μ΄λ Έν μ΄μ
μ£Όλ‘ ν΄λμ€ λ 벨μμ μ¬μ©
μμ±
name : Requestλ₯Ό ꡬλΆνκΈ° μν κΈ°λ³Έ κ°μΌλ‘ μ΄λ»κ² 보면 valueμ κ°μ λ³΄μΌ μ μμΌλ, nameμ ν°νλ‘ μ μΈνκ³ valueλ‘ μΈλΆ κ²½λ‘λ₯Ό μ§μ
value / path :
uri path
μ ꡬλΆνμ¬ μ΄λ€ ν¨μλ₯Ό μ€νν μ§ Mappingμν€λ κ°method :
RequestMethod.GET
,RequestMethod.POST
μ κ°μ΄ μμ² λ©μλλ₯Ό ꡬλΆproduces : Responseμ contentTypeμ μ§μ ν μ μλ€.
params : Requestμ μμ² uri νλΌλ―Έν°λ₯Ό λΆμνμ¬ λ³μλ‘ μ¬μ©
@PathVariable
:uri path
λ‘ λ€μ΄μ€λ κ°μ ꡬλΆνμ¬ λ³μλ‘ μ¬μ©νκΈ° μν¨@RequestParam
:/store/item?name=pencil
κ³Ό κ°μ΄ λ€μ΄μ€λ uriμquery string
μ μ΄μ©νκΈ° μν μ΄λ Έν μ΄μ
consumes : request bodyμ μ μ₯ν νμ μ μ ν
GetMapping, PostMapping, DeleteMapping, PutMapping ..
@RequestMappingμ νΉμ method κ³ μ μ μΌλ‘ μ μΈλμ΄ μλ μ΄λ Έν μ΄μ μ΄λ€.
λ©μλμ μ¬μ©λμλ€λ©΄ νΉμ‘ κ²½λ‘κ° μμ΄λ ν΄λμ€μ RequestMappingμ μ£Όμ λ°λλ€.
@ResponseBody, @RequestBody
λΉλκΈ°λ₯Ό μ²λ¦¬ νλ κ²½μ° μ¬μ© (Viewλ₯Ό ν΅ν΄ μΆλ ₯μ΄ λμ§μκ³ http bodyμ λ°μ΄ν°λ₯Ό μ§μ μ¨μ 보λ΄λ κ²)
HTTP BODYμ μ§μ λ°ν. ν νλ¦Ώμμ§μ΄ μλ λ°λ‘ λ°μ΄ν°λ₯Ό μ μ‘νλΌλ μ΄λ Έν μ΄μ .
viewResolver
κ° μλ HttpMessageConverter
κ° λμνλ©°, String
μ΄λ©΄ StringConverter
κ° κ°μ²΄
μ΄λ©΄ JsonConverter
κ° λμνμ¬ defaultλ κ°μ²΄λ₯Ό jsonνμμΌλ‘λ§λ€μ΄μ μλ΅.
ν΄λΌμ΄μΈνΈμ HTTP Acceptν€λμ μλ²μ 컨νΈλ‘€λ¬ λ°ν νμ μ 보 λμ μ‘°ν©νμ¬ λ°νλ°©μ μλμΌλ‘ κ²°μ
λ©μλμ λ°ν κ°μ΄ HTTP Response/Request bodyμ μ§μ μ§λ ¬ν λμμμ Springμ μλ¦°λ€.
HttpMessageConverterκ° μ‘΄μ¬νμ¬ νΉμ νν(json,xml..)λ‘ λ€μ΄μ¨ μμ² κ°μ μλ° κ°μ²΄λ‘ λ³ννκ³ μλ΅μ νΉμ ννλ‘ λ³΄λ΄κΈ° μν΄ μ¬μ©λλ€.
HttpMessageConverter
Springμμ μ¬μ©νκΈ° μν΄ κΈ°λ³Έμ μΌλ‘ @EnableWebMvcλ₯Ό μ¬μ©ν΄μ WebMvcConfigurerμ ꡬνν΄μΌ νλ€.
ByteArrayHttpMessageConverter β λ°μ΄νΈ λ°°μ΄ λ³ν
StringHttpMessageConverter β λ¬Έμμ΄ λ³ν
ResourceHttpMessageConverter β λͺ¨λ μ νμ μ₯ν μ€νΈλ¦Όμ λν΄ org.springframework.- core.io.Resource λ₯Ό λ³ν ν©λλ€.
SourceHttpMessageConverter β javax.xml.transform.Sourceλ₯Ό λ³νν©λλ€.
FormHttpMessageConverter β μμ λ°μ΄ν°λ₯Ό MultiValueMap <String, String> λ‘ /μμ λ³νν©λλ€ .
Jaxb2RootElementHttpMessageConverter β Java κ°μ²΄λ₯Ό XMLλ‘ /λ‘λΆν° λ³νν©λλ€ (JAXB2κ° ν΄λμ€ κ²½λ‘μμλ κ²½μ°μλ§ μΆκ°λ¨).
MappingJackson2HttpMessageConverter β JSON λ³ν (Jackson2κ° ν΄λμ€ κ²½λ‘μμλ κ²½μ°μλ§ μΆκ°λ¨)
MappingJacksonHttpMessageConverter β JSON λ³ν (Jacksonμ΄ ν΄λμ€ κ²½λ‘μμλ κ²½μ°μλ§ μΆκ°λ¨)
AtomFeedHttpMessageConverter β Atom νΌλλ₯Ό λ³νν©λλ€ (Romeμ΄ ν΄λμ€ κ²½λ‘μμλ κ²½μ°μλ§ μΆκ°λ¨).
RssChannelHttpMessageConverter β RSS νΌλλ₯Ό λ³νν©λλ€ (Romeμ΄ ν΄λμ€ κ²½λ‘μμλ κ²½μ°μλ§ μΆκ°λ¨).
μ€νλ§ λΆνΈλ Jackson2ObjectMapperBuilder
λ₯Ό JacksonAutoConfiguration
ν΄λμ€μμ μλμΌλ‘ μ€μ νκΈ° λλ¬Έμ λ³λ€λ₯Έ μ€μ μμ΄ ObjectMapper
λ₯Ό μ΄μ©ν΄ JSONννλ₯Ό λ³νν μμλ€.
spring-boot-start-webμ jackson-databindκ° μλμΌλ‘ μμ‘΄μ±μ΄ μ‘νκ²μ λ³Ό μ μλ€.
@RestContoller
@ResponseBodyλ₯Ό λͺ¨λ λ©μλμ μ μ©ν κ²κ³Ό λμΌν ν¨κ³Ό
ν΄λμ€
ResponseEntity
Spring framworkλ HttpEntity
λΌλ ν΄λμ€λ₯Ό μ 곡νλλ° μ΄λ response/requestμ HttpHeaderμ HttpBodyλ₯Ό ν¬ν¨νλ ν΄λμ€μ΄λ€.
HttpEntityλ₯Ό μμλ°μ Responseμ ν΄λΉνλ λΆλΆμ λ΄λΉνλ ν΄λμ€μ΄λ€.
status, header, body λΆλΆμ μμ /μ½μ νμ¬ μλ΅ν€λλ₯Ό λ³΄λΌ μ μκ² ν΄μ€λ€.
λ©μλ
build() : build λ΄ parameterλ‘ μ무κ²λ μ λ ₯μ μν μ nullμΈ bodyμ res λ°ννλ€.
parameterλ‘ bodyλ₯Ό λ°μ μ μλ€.
Reference
https://www.baeldung.com/spring-httpmessageconverter-rest
Last updated