Response 내려주기
13 Oct 2021 -
2 minute read
JSON 내려주기
-
text 보다는 JSON을 내려주는 형태를 제일 많이 사용
-
java > com.example.response_Test > controller > ApiController.java
package com.example.response_test.controller; import com.example.response_test.dto.User; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api") public class ApiController { // text > 거의 안씀 ㅋ @GetMapping("/text") public String text(@RequestParam String account){ return account; } // JSON @PostMapping("/json") public User json(@RequestBody User user){ return user; } }
-
JSON 디자인
{ "name" : "JIN", "age" : "28", "phone_number" : "010-1111-2222", "address" : "서울시" }
-
=> User라는 객체를 @RequestBody로 받아서 User로 리턴
-> request가 오면 object mapper를 통해서 object로 바뀜
-> method를 타고 object를 던짐
-> 다시 object mapper를 통해서 json으로 바뀌어서 response 내려감
RequestEntity
-
RequestEntity : 사용자의 HttpRequest에 대한 응답 데이터를 포함
-
java > com.example.response_Test > controller > ApiController.java
package com.example.response_test.controller; import com.example.response_test.dto.User; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api") public class ApiController { // ResponseEntity @PutMapping("/put") public ResponseEntity<User> put(@RequestBody User user){ return ResponseEntity.status(HttpStatus.CREATED).body(user); } }
- PUT > 응답코드 201
-
페이지(html) 리턴하기
-
java > com.example.response_Test > controller > PageController.java
package com.example.response_test.controller; import com.example.response_test.dto.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; // 페이지(html파일) return @Controller public class PageController { @RequestMapping("/main") public String main(){ return "main.html"; } // ResponseEntity @ResponseBody @GetMapping("/user") public User user(){ User user = new User(); user.setName("LEE"); user.setAddress("서울시"); return user; } }
-
controller는 리소스를 찾지만 responsebody는 말그대로 responsebody를 만들어서 내리겠다(json으로 객체를 내려준다)는 어노테이션
-
보통 pagecontroller에서는 responsebody 안내림, 따로 apicontroller 만들어서 사용하는게 정확한 방법
-
-
java > com.example.response_Test > dto > User.java
package com.example.response_test.dto; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; @JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class) @JsonInclude(JsonInclude.Include.NON_NULL) // null값은 포함하지 않음 public class User { private String name; private int age; private String phoneNumber; private String address; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + ", phoneNumber='" + phoneNumber + '\'' + ", address='" + address + '\'' + '}'; } }
- @JsonInclude(JsonInclude.Include.NON_NULL) : NULL값은 포함하지 않겠다는 어노테이션
-
resources > static > main.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> Spring Boot Main html </body> </html>
- Content-Type이 ‘text/html’인 걸 확인할 수 있다