springboot - blog project (13,14)

Yuri Lee·2020년 8월 20일
0

springboot - blog project

목록 보기
7/49

스프링부트 강좌 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로 맵핑해서 받을 수 있다.

이 글은 유투버 겟인데어의 스프링 부트 강좌를 바탕으로 정리한 내용입니다.

profile
Step by step goes a long way ✨

0개의 댓글