Digking's cave

My First Blog Project (3) : HTTP 체험하기 (GET/PUT/UPDATE/DELETE) / @RestController / @RequestParam / @RequestBody 본문

Spring/My First Blog Project

My First Blog Project (3) : HTTP 체험하기 (GET/PUT/UPDATE/DELETE) / @RestController / @RequestParam / @RequestBody

디깅 2022. 12. 16. 09:38
728x90

 

1. Postman 설치하기

https://www.postman.com/downloads/

 

Download Postman | Get Started for Free

Try Postman for free! Join 20 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.

www.postman.com

 

2. stateless & stateful 알아보기

 

stateless : 요청시마다 스트림을 연결해서 data를 주고 받음

stateful : 연결이 지속 (ex: 채팅)

 

3. MIME 타입 알아보기

https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types

 

MIME 타입의 전체 목록 - HTTP | MDN

다음은 일반적인 확장자로 정렬된, 문서 타입과 관련된 MIME 타입의 포괄적인 목록입니다.

developer.mozilla.org

4. HTTP 실습 진행

HttpControllerTest 에 Get/Post/Put/Delete 작성

 

HttpControllerTest.java

package com.cos.blog.test;


//@Controller 사용자가 요청하면 html을 응답
//@RestController 사용자가 요청하면 data를 응답

import org.springframework.web.bind.annotation.*;

@RestController
public class HttpControllerTest1 {

//    @GetMapping("http/get")
//    public String getTest(@RequestParam int id, @RequestParam String username){
//        return "get 요청"+id+" & "+username;
//    }
    @GetMapping("http/get")
    public String getTest_2(Member member){
        return "get 요청 "+ member.getId()+" & "+member.getUsername()+" & "+member.getPassword() +" & " + member.getEmail();
    }
//    @PostMapping("http/post")
//    public String postTest(Member member){
//        return "get 요청 "+ member.getId()+" & "+member.getUsername()+" & "+member.getPassword() +" & " + member.getEmail();
//    }
    @PostMapping("http/post")
    public String postTest(@RequestBody String text){
        return text;
    }
    @PutMapping("http/put")
    public String putTest(){
        return "put 요청";
    }

    @DeleteMapping("http/delete")
    public String deleteTest(){
        return "delete 요청";
    }
}

 

# Controller 종류

@Controller : 사용자가 요청하면 html을 응답
@RestController : 사용자가 요청하면 data를 응답

 

# 주소창에 입력되는 querystring 값을 받는 방법

@RequestParam

값을 각각 입력하고 값을 받음

 

Model

model로 전체를 받아서 필요한 값을 get()하여 사용할 수 있다.

 

@RequestBody

querystring 으로 값을 보내는 것이 아니라, Body에 담아서 값을 보냈을 경우에 받는 방법이다.

body에 형태를 지정하여 보낸 형태에 맞게 받으면 된다.

ex)

x-www-form-urlencoded(form) - Model 로 받음

body의 raw / text 형태 - String 로 받음

body의 raw / json형태 - Model 로 받음

-> springBoot에 MessageConverter 가 자동으로 형태 변형해서 받아준다.

 

body의 raw / text 형태 - String 으로 받으려고하면 받지 못함

 

# 인터넷브라우저를 통한 요청은 get 요청밖에 할 수 없다

 

Member.java

package com.cos.blog.test;

public class Member {

    private int id;
    private String username;
    private String password;
    private String email;

    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;
    }
}

test.jsp

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p>jsp test</p>
</body>
</html>
반응형