[TIL] 17. HTTP 데이터 처리

김지수·2024년 5월 14일

TIL

목록 보기
17/53

JackSon

JackSon 은 Java에서 JSON(JavaScript Object Notation) 데이터를 처리하기 위한 강력한 라이브러리이다. 이 라이브러리 JSON 데이터와 Java객체 간의 변환을 쉽게 할 수 있도록 도와주는다.

Jackson 주요 기능

JSON과 Java 객체 간의 매핑 (Marshalling/Unmarshalling)

Jackson은 JSON 데이터를 Java 객체로 변환하는 작업을 처리한다. 이를 "Unmarshalling" 또는 "Deserialization"이라고 한다. 또한 Java 객체를 JSON 형식의 데이터로 변환하는 작업을 처리한다. 이를 "Marshalling" 또는 "Serialization"이라고 한다.

객체의 필드를 JSON 키로 매핑

Jackson은 Java 객체의 필드를 JSON 키로 매핑하고 이를 이용하여 JSON 데이터를 Java 객체로 변환한다. 이를 통해 객체 간의 데이터 전송이나 데이터베이스와의 상호 작용에서 유용하게 사용된다.

애노테이션 기반 설정

Jackson은 애노테이션을 사용하여 JSON 직렬화 및 역직렬화 동작을 제어할 수 있다. 예를 들어 @JsonProperty, @JsonIgnore 등의 애노테이션을 사용하여 특정 필드를 JSON 데이터로 노출시키거나 숨길 수 있다.

다양한 데이터 형식 지원

Jackson은 다양한 데이터 형식을 지원한다. 이는 표준적인 JSON 형식뿐만 아니라 YAML, XML 등 다른 데이터 형식으로의 변환도 가능하다.

데이터 바인딩(Data Binding)

Jackson은 다양한 형식의 데이터를 자바 객체에 바인딩하는 데 사용될 수 있다. 예를 들어 HTTP 요청의 본문에서 JSON 데이터를 읽어들여 자바 객체에 매핑할 때 사용된다.

Spring프레임워크에서는 주로 Jackson을 사용하여 HTTP 요청 및 응답에서 json 데이터를 처리하고 데이터베이스와의 상호 자굥에서도 사용된다. 이를 통해 개발자는 JSON과 Java 객체 간의 변환을 간편하게 처리 할 수 있고 코드의 가독성과 유지 보수성을 높일 수 있다.


Path Variable, RequestParam, RequestBody

@Path Variable

Path Variable은 URI(Uniform Resource Identifier)의 일부로 전달되는 데이터를 나타낸다. 주로 RESTful 웹 서비스에서 사용된다. 일반적으로 URI의 일부로 파라미터를 전달하는 데 사용되며, 경로의 일부로 값이 전달된다.

// url = http://localhost:8080/variable/{id}
@GetMapping("/variable/{id}")
public ResponseEntity<User> getUserById(@PathVariable Long id) {
// 아이디 찾는 로직
}

@PathVariable 는 생략가능

@Request Param

Request Parameter는 HTTP 요청의 쿼리 문자열(query string)에 포함된 데이터를 나타낸다. 주로 폼 데이터를 전달하거나 검색 쿼리를 보낼 때 사용된다. Request Parameter는 URI의 끝에 ?로 시작하고 key=value 쌍으로 이어진다.

// url = http://localhost:8080/search?query=spring&category=framework
@GetMapping("/search")
public ResponseEntity<List<Product>> searchProducts(
@RequestParam String query,
@RequestParam(required = false) String category){
// 제품 검색 위한 로직
}

@RequestParam 도 역시 생략가능
required = false 는 기본설정은 true 이고 파라미터 값이 필수적이지 않다는 것이다.
query 와 category에 값이 있는 객체로도 받아올 수 있다.
예를들어서

public ResponseEntity<List<Product>> searchProducts(Product product){
// 제품 검색 위한 로직
}

@RequestBody

Spring MVC에서 사용되는 어노테이션으로 HTTP 요청의 본문(body)을 자바 객체로 변환하는 데 사용된다. 주로 POST 또는 PUT 요청과 함께 JSON 또는 XML 형식의 데이터를 전송할 때 사용된다.

// POST http://localhost:8080/json
// Header
// Content Type : application/json
// Body
// {"name":"이름", "age":"95"}
@PostMapping("/json")
@ResponseBody
public String requestBodyJson(@RequestBody User user){
// 로직
}

오늘의 회고

오늘은 http 데이터를 객체로 처리하는 방법을 배웠다. url로 받아온 데이터들을 받아와서 데이터를 처리하면 된다. 주의할 점은 데이터를 받아왔는데 key 값이 틀리면 받아오지 못하므로 오타를 조심해야 된다.

profile
서툴고 부족한 점이 많지만, 배우고 발전하며 성장하기 위해 노력하겠습니다.

0개의 댓글