1. Get요청
url의 parameter 형태로 ?key=value&key=value&... 형태로 데이터를 담아서 보냄
body로 데이터를 담아 보내지 않고 url에 담음
2. Post, Put, delete 요청 (데이터를 변경)
데이터를 담아서 보내야할 것이 많음 그래서 body에 담아서 보냄
여러가지 data MIME형식 중 form태그는 Get, Post방식 2가지 방식으로 밖에 보낼 수 없음 (key=value)
그래서 통일 : 자바스크립트로 ajax요청 + 데이터는 json으로 통일!!
form:form 태그라는 것도 있는데 (4가지 다 쓸 수 있음)(X) 안씀
자바스크립트로 ajax요청 + 데이터는 json으로 통일 <-- 이거씀
스프링 컨트롤러는 key=value의 데이터를 자동으로 파싱하여 변수에 담아준다
가령 get요청은 key=value이고 post요청 중에 x-www-form-urlencoded (form태그를 만들어서 데이터를 전송) 시에도 key=value이기 때문에 이러한 데이터는 스프링 컨트롤러가 가진 메소드의 parameter로 받을 수 있다
@PostMapping("/dummy/join")
public String join(User user, String username) {
System.out.println(username);
System.out.println(user.getUsername());
System.out.println(user.getPassword());
System.out.println(user.getEmail());
// 이게 @DynamicInsert나 @ColumnDefault를 안쓰고 default로 넣는 방법인듯?
// enum을 쓰면 값을 강제할 수 있다..
user.setRole(RoleType.USER);
User userSaved = userRepository.save(user);
// System.out.println(userRepository.findById(userSaved.getId()));
return "회원가입이 완료되었습니다.";
}
key=value방식으로 보낸 requestMessage의 데이터를 Object형식(위의 예시는 User)로 받을 수 있다.
단 User클래스에 해당 속성(requestMessage의 Body에 담긴 username, password, email데이터)의 setter메소드가 정의되어 있어야 한다.
key=value 형태가 아닌 josn등의 데이터를 받아서 읽어 오려면 DTO 앞에 @RequestBody를 붙여주어야 한다.
@PostMapping("/dummy/join")
public String join(@RequestBody User user, String username) {
System.out.println(username);
.....
'무지성 메모' 카테고리의 다른 글
■ 대문자로만 이루어진 문자인지 판별 (0) | 2022.03.19 |
---|---|
■ AJAX를 쓰는 이유..? (0) | 2022.03.15 |
■ string클래스의 역순 출력 함수 (0) | 2022.03.10 |
■ char배열의 stream은 왜 안되는걸까? (0) | 2022.03.09 |
■ 소켓통신보다 http통신이 더 비효율적인데 왜 http통신? (0) | 2022.03.08 |