스프링부트 강좌 13강(블로그 프로젝트) - http요청 실습1
ctrl + space -> 어노테이션 자동 임포트
개발자 도구(f12)
network, get 확인할 수 있음
Response Headers
클라이언트가 요청,
서버가 어떻게 응답을 해주었나
content-type: text/html;charset-utf-8
응답을 해줬는데, 텍스트인데 html 텍스트이고, 인코딩은 utf-8이다
405 에러 :
메소드가 허용되지 않습니다. 무슨 뜻?..
인터넷 브라우저 요청은 무조건 get 요청밖에 할 수 없다. 그래서 나머지들은 postman 을 사용하여 테스트 할 수 있다!!!
스프링부트 강좌 14강(블로그 프로젝트) - http요청 실습2
자바에서 변수는 다 private로 만든다.
배고픔 = 50 / 100이 꽉찬 상태
배고픔을 강제로 100으로 변경? -> X -> 객체지향프로그램에 맞지 않음!
eat()이라는 메서드를 통해 ++; / 이런식으로 올려줌
객체 지향에서는.. 변수의 상태는 메서드에 의해 변경되도록 설계해야 한다. 그래서 모델을 만들 때, 어떤 클래스를 만들 때는 변수는 private로 만든다. 그리고 이 private 변수를 수정할 수 있도록 우클릭 -> Source -> Generate getter/setter!
만들어진 함수를 통해서 접근하여 수정할 수 있다.
생성자 생성은?
우클릭 -> Source -> Generate
Constructor
[Get 요청]
http://localhost:8080/http/get?id=1 이 방식으로 query string 라고 부른다.
//http://localhost:8080/http/get(select)
@GetMapping("/http/get")
public String getTest(@RequestParam int id) {
return "get 요청 : "+id;
}
public String getTest(Member m) {
return "get 요청 : "+m.getId()+", "+m.getUsername()+", "+m.getPassword();
}
원래 RequestParam 할 때는 하나하나씩 다 적어줘야 하는데 멤버오브젝트를 적어주게 되면 알아서 이 값들이 맵핑이 되어서 들어온다.
여기서 이메일을 추가해주고 다시 get 요청을 해보자!
public String getTest(Member m) {
return "get 요청 : "+m.getId()+", "+m.getUsername()+", "+m.getPassword()+", "+m.getEmail();
}
null 값이 뜬다. get 요청할 때 email 값을 넣어주지 않았기 때문
http://localhost:8080/http/get?id=1&username=yuri&password=1234&email=yuri@nate.com
를 입력해주면 null값이 뜨지 않는다. 멤버 오브젝트의 변수명에 주의하자! email에서 ema라는 오타를 입력할 경우 다시 null 값이 뜬다.
get방식으로 데이터를 요청할 때 어떤 데이터를 요청할 것인지 요청하는 방법은 query String 방법밖에 없다.
[post 요청]
데이터를 한건 추가해~ 라는 의미이다. 어떤 데이터를 추가할 것인가? 회원정보를 추가해보자
?를 통해 쿼리 스트링을 보내는 것이 아니라 Body라는 곳에 담아 보낸다. 방법이 굉장히 많은데 x-www-form-urlencoded 를 사용해보자
그럼 이번엔 raw 방식으로?!
@PostMapping("/http/post")
public String postTest(String text) {
return "post 요청 : "+text;
}
post 요청 : null 이 뜬다..
@PostMapping("/http/post")
public String postTest(@RequestBody String text) {
return "post 요청 : "+text;
}
@RequestBody 사용한 결과 정상적으로 작동하는 것을 볼 수 있다.
raw 데이터라는 것은 가장 기본적인 데이터라는 의미이다. 이는 MIME type이 text/plain 이라는 것이다. 평문을 보냈다는 말이다.
이번에는 application/json 이라는 데이터를 보내보도록 하자.
@PostMapping("/http/post") //text/plain , application/json
public String postTest(@RequestBody Member m) {
return "post 요청 : "+m.getId()+", "+m.getUsername()+", "+m.getPassword()+", "+m.getEmail();
}
파싱을 할 수 있다. 이는 스프링 부트의 Messageconverter가 자동으로 해준다.
POST 요청을 할 것인데 이때 json 데이터를 실었다. 그럼 MIME type 이 application json 이 된다.
text 데이터로 설정하면 text/plain 가 된다.
한마디로 body에 데이터를 실어서 보내면 스프링에서는 굉장히 간단하게 object로 맵핑해서 받을 수 있다. RequestBody라는 어노테이션을 통해서 object로 맵핑해서 받을 수 있다.
이 글은 유투버 겟인데어의 스프링 부트 강좌를 바탕으로 정리한 내용입니다.