Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

7주차 미션 / 서버 1조 주민석 #17

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions src/main/java/kuit/server/controller/PostUserRequestValidator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package kuit.server.controller;

import kuit.server.dto.user.PostUserRequest;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;

@Component
public class PostUserRequestValidator implements Validator {

@Override
public boolean supports(Class<?> clazz) {
return PostUserRequest.class.isAssignableFrom(clazz);
}

@Override
public void validate(Object target, Errors errors) {
PostUserRequest postUserRequest = (PostUserRequest) target;

// 로직 추가
}
}
25 changes: 25 additions & 0 deletions src/main/java/kuit/server/controller/ResponseController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package kuit.server.controller;

import kuit.server.common.response.BaseErrorResponse;
import kuit.server.common.response.BaseResponse;
import kuit.server.common.response.status.BaseExceptionResponseStatus;
import kuit.server.common.response.status.ResponseStatus;
import kuit.server.temp.UserData;
import org.apache.catalina.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ResponseController {

@RequestMapping("/base-response")
public BaseResponse<UserData> getSuccessResponse() {
UserData userData = new UserData("kim", 20);
return new BaseResponse<>(userData);
}

@RequestMapping("/base-error-response")
public BaseErrorResponse getErrorResponse() {
return new BaseErrorResponse(BaseExceptionResponseStatus.BAD_REQUEST);
}
}
8 changes: 8 additions & 0 deletions src/main/java/kuit/server/controller/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;

import java.util.List;
Expand All @@ -23,6 +24,13 @@
public class UserController {

private final UserService userService;
private final PostUserRequestValidator postUserRequestValidator;

@InitBinder
public void init(WebDataBinder dataBinder){
log.info("init binder {}", dataBinder);
dataBinder.addValidators(postUserRequestValidator);
}

/**
* 회원 가입
Expand Down
1 change: 1 addition & 0 deletions src/main/java/kuit/server/dao/UserDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
@Repository
public class UserDao {

// 파라미터를 바인딩
private final NamedParameterJdbcTemplate jdbcTemplate;

public UserDao(DataSource dataSource) {
Expand Down
74 changes: 74 additions & 0 deletions src/main/java/kuit/server/temp/TempController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package kuit.server.temp;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.ServletInputStream;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.User;
import org.springframework.http.HttpEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;
import java.nio.charset.StandardCharsets;

@Slf4j
@Controller
//@RestController
public class TempController {
private ObjectMapper objectMapper = new ObjectMapper();

@PostMapping("/request-body-json-v1")
public void requestBodyJsonV1(HttpServletRequest request, HttpServletResponse response) throws IOException {
// convert value in request to json object (string)
ServletInputStream inputStream = request.getInputStream();
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
log.info("messageBody = {}", messageBody);

// convert json object to UserData object
UserData userData = objectMapper.readValue(messageBody, UserData.class);
log.info("username = {}, age = {}", userData.getUsername(), userData.getAge());

response.getWriter().write("ok");
}

@ResponseBody
@PostMapping("/request-body-json-v2")
public String requestBodyJsonV2(@RequestBody String messageBody) throws JsonProcessingException {
UserData userData = objectMapper.readValue(messageBody, UserData.class);
log.info("username = {}, age = {}", userData.getUsername(), userData.getAge());

// @ResponseBody 안붙이면 ok 라는 뷰를 가진 ViewResolver 반환
return "ok";
}

@ResponseBody
@PostMapping("/request-body-json-v3")
public String requestBodyJsonV3(@RequestBody UserData userData) {
log.info("username = {}, age = {}", userData.getUsername(), userData.getAge());
return "ok";
}

@ResponseBody
@PostMapping("/request-body-json-v4")
public String requestBodyJsonV4(HttpEntity<UserData> httpEntity) {
UserData userData = httpEntity.getBody();
log.info("username = {}, age = {}", userData.getUsername(), userData.getAge());
return "ok";
}

@ResponseBody
@PostMapping("/request-body-json-v5")
public UserData requestBodyJsonV5(@RequestBody UserData userData) {
log.info("username = {}, age = {}", userData.getUsername(), userData.getAge());
return userData;
}


}
13 changes: 13 additions & 0 deletions src/main/java/kuit/server/temp/UserData.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package kuit.server.temp;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
@AllArgsConstructor
public class UserData {
private String username;
private int age;
}