๐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๊ฐ์ผ๋ก ๋์จ๋ค.