🔍HTTP 요청 방식
- HTTP 통신 : 약속
- 통신 방법 4가지 : GET, POST, PUT, DELETE (이외에도 더 많지만 이 4가지만 기억하면 된다고 하셨다.)
- GET : 데이터를 줘! -Select
- POST : 데이터를 추가해줘! -Insert
- PUT : 데이터를 수정해줘! -Update
- DELETE : 데이터를 삭제해줘! -Delete
🔍MIME (Multipurpose Internet Mail Extensions) 이란?
- 다목적 인터넷 메일 확장이란 뜻으로 전자우편의 데이터 형식을 정의한 표준 포맷
- 기존 전자우편은 문자 데이터 이외의 바이너리 데이터(이미지, 동영상, MS 워드 등)를 전송할 수 없었다.
- 그리하여 여러 멀티미디어 데이터들의 바이너리 데이터를 ASCII 코드로 변환하는 방법(인코딩)과 미디어 종류를 MIME 타입으로 정의 후, MIME 사양에 따라 멀티미디어 파일의 데이터를 ASCII 데이터로 변환 후 전송할 수 있게됨.
🔍MIME 타입
- text : 텍스트를 표현 (text/plain, text/html, text/css, text/javascript)
- image : 이미지를 표현
- video : 동영상을 표현
- application : 모든 종류의 이진 데이터를 표현
- multipart : 여러 가지 타입의 데이터들을 동시에 전송할 때 사용
🤍PostMan 사용하여 HTTP 요청 실습하기
먼저 Postman을 설치해 준다.
크롬에도 설치해 준다.
그리고 아직 디비에 테이블을 생성하지 않았지만 실습용 모델인 Member.java 파일을 만들어준다.
public class Member {
private int id;
private String username;
private String password;
private String email;
public Member(int id, String username, String password, String email) {
this.id = id;
this.username = username;
this.password = password;
this.email = 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;
}
}
HttpController.java 파일을 생성해 준다.
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
//사용자가 요청 -> 응답(Data)을 해주는 역할
@RestController
public class HttpController {
//http://localhost:8080/http/get (select)
//인터넷 브라우저 요청은 무조건 get 요청밖에 할 수 없다.
@GetMapping("/http/get")
public String getTest() {
return "get 요청";
}
//http://localhost:8080/http/post (insert)
@PostMapping("/http/post")
public String postTest() { //MessageConverter(스프링부트)
return "post 요청";
}
//http://localhost:8080/http/put (update)
@PutMapping("/http/put")
public String putTest() {
return "put 요청 ";
}
//http://localhost:8080/http/delete (delete)
@DeleteMapping("/http/delete")
public String deleteTest() {
return "delete 요청";
}
}
프로젝트 실행 후 먼저 Get매핑해둔 주소를 입력하면 아래와 같이 잘 나온다. 그러나
Post매핑해둔 주소 입력 시에는 에러가 난다. -> 인터넷 브라우저 요청은 무조건 get 요청밖에 할 수 없다.
그렇기 때문에 우리는 Postman을 사용할 것이다.
Postman을 켜서 각각 매핑해둔 주소를 입력하면 알맞게 나온다.
- Post
- Put
- Get
- Delete
이때 미리 만들어놓은 member 클래스를 활용하여 HTTP 요청을 확인해볼 수 있다. 먼저 아래와 같이 getTest 메서드를 수정 후 postman에서 get 요청을 해보면
이렇게 id 값이 함께 나온다. 이때 http/get?id=1 이 부분을 쿼리스트링이라고 한다.
Post 요청도 마찬가지로
text 값이 잘 나온다. 이때 raw 부분의 Text에 위에서 설명했던 MIME 타입(text/plain) 이 사용된 것이다.
아래와 같이 코드를 바꾸고
text/plain -> application/json 타입으로 요청을 할 때에는 아래와 같이 {} 안에 데이터를 담아서 전송한다. 이때 왼쪽 값을 key라고 하고 key값은 항상 String 타입이기 때문에 쌍따옴표로 묶어줘야 한다. 오른쪽에는 숫자가 올 수도 있고 문자가 올 수도 있고 다양한 값이 올 수 있다.
Put매핑으로 요청 시에도
값이 잘 출력된다. email하고 name은 위 코드에서 넘기지 않았기 때문에 당연히 null값으로 나온다.
'💻 my code archive > 🏷️JAVA & Spring(Boot)' 카테고리의 다른 글
스프링부트 공부기록(18) - 프로젝트 준비, 컨트롤러 실습, jar 파일 실행해보기 (0) | 2022.03.16 |
---|---|
[스프링부트 블로그 만들기] lombok 세팅 및 사용해보기 (0) | 2022.03.16 |
[스프링부트 블로그 만들기] STS 설치, 의존성, MySQL 세팅, 깃허브 연동, 프로젝트 실행하기 (0) | 2022.03.15 |
스프링부트 공부기록(17) - 무중단 배포 만들기 (0) | 2022.03.08 |
스프링부트 공부기록(16) - Travis CI 배포 자동화, S3, CodeDeploy 연동 (0) | 2022.03.08 |