@Controller
사용자가 요청 ▷ 응답 (HTML 파일)
@RestController
사용자가 요청 ▷ 응답 (DATA)
postman
[HttpControllerTest]
@RestController
public class HttpControllerTest {
// http://localhost:8080/http/get (select)
@GetMapping("/http/get")
public String getTest(Member m) {
return "get 요청";
}
// http://localhost:8080/http/post (insert)
@PostMapping("/http/post")
public String postTest(@RequestBody Member m) {
return "post 요청";
}
// http://localhost:8080/http/put (update)
@PutMapping("/http/put")
public String putTest(@RequestBody Member m) {
return "put 요청";
}
// http://localhost:8080/http/delete (delete)
@DeleteMapping("/http/delete")
public String deleteTest() {
return "delete 요청";
}
}
인터넷 브라우저 요청은 무조건 Get 요청만 할 수 있다
post, put, delete 는 브라우저를 통해 요청 못한다
http://localhost:8080/http/post
http://localhost:8080/http/put
http://localhost:8080/http/delete
그래서 나머지는 postman에서 요청
객체지향
변수는 메서드에 의해 값을 변경할 수 있다
아주 간단하게 설명
- 변수에 직접 접근하여 변수값을 변경하는 방법
[People]
public class People {
int hungryState = 50; // 배고픈 상태 50%
public static void main(String[] args){
People p = new People();
p.hungryState = 100; // 직접 변수값 변경
}
}
hungryState 변수를 직접 변경. 이것은 객체지향이 아니다
- 메서드에 의해 변수 상태변경 하는 방법
[People]
public class People {
private hungryState = 50; // private 접근불가 변경 못하도록
public void eat() { // public 변경가능
hungryState += 10;
}
public static void main(String[] args){
People p = new People();
p.eat(); // 함수를 이용해 변수변경
}
}
private 을 써서 다이렉트로 변수(hungryState)를 상태변경을 못하고, public 메서드(eat)에 의해서 상태변경이 되도록한다.
- 다른 클래스에서 접근하는 방법
public class Test {
public static void main(String[] args){
People 홍길동 = new People();
홍길동.eat(); // 함수를 이용해 변수변경
}
}
홍길동.hungryState 안됨 바로 접근을 못하게 함
다시 말해 객체지향에서는 변수를 private으로 만들고 변수의 상태는 메서드에 의해서 변경이 되도록한다.
[Member]
public class Member {
private int id;
private String username;
private String password;
private String email;
}
그래서 한 클래스의 모델을 만들 때 변수를 private으로 만들고
1. public 메서드를 만들어서 private 변수들의 상태값을 변경할 수 있게 getter, setter 생성
( 우클릭 - Source - Generate Getter and Setter )
2. 생성자도 만든다
( 우클릭 - Source - Generate Constructor using Fields )
public class Member {
private int id;
private String username;
private String password;
private String email;
}
// getter, setter 생성자
public int getId(){
return id;
}
public void setId(int id){
this.id id;
}
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username = username;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password = password;
}
public String getEmail(){
return email;
}
public void setEmail(String email){
this.email = email;
}
// 생성자
public Member(int id, String username, String password, String email) {
this.id = id;
this.username = username;
this.password = password;
this.email = email;
}
postman을 이용해 http 요청 4가지 방법 기본적인 설명
1. postman 에서 get 요청
* 물음표 뒤에 쿼리스트링 이라고 한다
http://localhost:8080/http/get?id=1&username=ssar
@GetMapping("/http/get")
public String getTest(@RequestParam int id, @RequestParam String username) {
return "get 요청 : " + id+ "," + username;
}
(@RequestParam int id, @RequestParam String username) = id, username을 받음
리턴값 get 요청 : 1, ssar
한꺼번에 받는 방법도 있다
@GetMapping("/http/get")
public String getTest(Member m) {
return "get 요청 : " + m.getId()+ "," + m.getUsername();
}
Member객체를 적어주면 쿼리스트링이 알아서 Member 객체에 매핑을 해준다 (스프링이 하는 역할)
리턴값 get 요청 : 1, ssar
만약 쿼리스트링에 없는 값을 메서드에서 받았다면 null값이 뜬다
http://localhost:8080/http/get?id=1&username=ssar
@GetMapping("/http/get")
public String getTest(Member m) {
return "get 요청 : " + m.getId()+ "," + m.getUsername()+ "," m.getPassword();
}
리턴값 get 요청 : 1, ssar, null
※ 변수명도 틀리면 null값이 된다
2. postman 에서 post 요청
get처럼 데이터를 주소에 붙여서 보내는게 아니라 body에 담아 보낸다
// http://localhost:8080/http/post (insert)
@PostMapping("/http/post")
public String postTest(Member m) {
return "post 요청 : "+m.getId()+", "+m.getUsername()+", "+m.getPassword()+", "+m.getEmail();
}
2가지 방법이 있다.
2-1. 텍스트 요청 text/pain 은 raw 데이터 로 받는다 (기본적인 데이터)
@PostMapping("/http/post")
public String postTest(@RequestBody String text) {
return "post 요청 : " + text;
}
바디데이터는 @RequestBody 를 붙여 받아야 null이 안뜬다. (get방식은 @RequestParam)
리턴값 get 요청 : 안녕
2-2. application/json 은 제이슨 형태로 바꾸고 받는다
@PostMapping("/http/post")
public String postTest(@RequestBody Member m) {
return "post 요청 : " + m.getId()+ "," + m.getUsername()+ ","+m.getPassword()+ ","+m.getEmail();
}
put, delete 요청도 post요청과 비슷하다
[ HttpControllerTest ]
// http://localhost:8080/http/put (update)
@PutMapping("/http/put")
public String putTest(@RequestBody Member m) {
return "put 요청 : "+m.getId()+", "+m.getUsername()+", "+m.getPassword()+", "+m.getEmail();
}
// http://localhost:8080/http/delete (delete)
@DeleteMapping("/http/delete")
public String deleteTest() {
return "delete 요청";
}
'공부' 카테고리의 다른 글
lombok 설정 | yml 설정 (0) | 2022.11.01 |
---|---|
HTTP | stateless ,stateful | MIME 타입 (0) | 2022.11.01 |
스프링부트 기본 개념들 (1) | 2022.08.16 |
JAVA | 자바, JVM, 객체지향 프로그래밍 (0) | 2022.08.02 |
Spring | 스프링, 의존성 주입과 제어의 역전, ORM 과JPA (0) | 2022.07.27 |