Response 내려주기


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’인 걸 확인할 수 있다

Categories:

Spring