@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 요청";
}

 

반응형
LIST

+ Recent posts