[스프링부트 블로그 만들기] Http 요청 방식, MIME 타입
my code archive
article thumbnail
반응형

🔍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값으로 나온다.

반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형