API POST 방식을 사용하는 방법
메서드 | 의미 | CRUD | 멱등성 | 안정성 | Path Variable |
Query Parameter |
DataBody |
GET | 리소스 취득 | R (read) | o | o | o | o | x |
POST | 리소스 생성,추가 | C (create) | x | x | o | △ | o |
PUT | 리소스 갱신,생성 | C / U (update) | o | x | o | △ | o |
DELETE | 리소스 삭제 | D | o | x | o | o | - |
HEAD | 헤더데이터 취득 | - | o | o | - | - | - |
OPTIONS | 지원하는 메서드 취득 | - | o | - | - | - | - |
TARCE | 요청 메시지 반환 | - | o | - | - | - | - |
CONNECT | 프록시 동작의 터널 접속으로 변경 | - | x | - | - | - | - |
1) Post 를 받아주는 어노테이션
Post 방식은 데이터를 Body에 담아서 보내주는데,
해당 값을 받기 위해서 @PostMapping 어노테이션을 사용한다.
또한 받아오는 파라미터에 @RequestBody 를 선언하여 Body로부터 받는다고 알려주어야 데이터를 받을 수 있다.
2) Post로 부터 전달 받는 데이터 형태
body로 부터 전달 받는 데이터는 xml 또는 JSON 형태로 값이 넘어온다.
* 대부분 '제이슨'형식으로 넘어온다.
JSON은 Key , Value 의 형태의 데이터이다.
Body를 통해 전달 받은 key: value를 Map을 사용할 수도 있지만, 일반적으로 객체를 사용하여 값을 받아준다.
{
"string" : "문자",
"number" : 20,
"boolean" : false,
// 회원 정보
"Object":{
"key" : "value",
"key1" : "value1",
"key2" : "value2"
}
}
// 배열 같은 값의 반복 user조회의 경우
{
"user_list":[
{
"account": "value",
"password": "value"
},
{
"account": "value1",
"password": "value1"
}
]
}
- Controller
@RestController
@RequestMapping("/api")
public class PostApiController {
@PostMapping("/post")
public void post(@RequestBody PostRequestDto requestData){
System.out.println(requestData);
}
}
-Class
전달 받은 값이 자바에서 사용하는 필드 형시과 같지 않을때 어노테이션을 사용하여 해당 문자를 일치 시켜줄 수 있다.
@JsonProperty("phone-number")
일치 시키지 않는다면 값은 받아지지 않아 null 값이 된다.
package com.example.post.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
public class PostRequestDto {
private String account;
private String email;
private String address;
private String password;
@JsonProperty("phone-number")
private String phoneNumber;
//get/set
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "PostRequestDto{" +
"account='" + account + '\'' +
", email='" + email + '\'' +
", address='" + address + '\'' +
", password='" + password + '\'' +
", phoneNumber='" + phoneNumber + '\'' +
'}';
}
}
- 실행결과
'BackEnd > HTTP' 카테고리의 다른 글
[ HTTP / 네트워크 ] HTTP / 웹서버 / 웹 어플리케이션 서버 (0) | 2023.03.20 |
---|---|
[ HTTP / 네트워크 ] @RestController - API PUT / DELETE 방식을 사용하는 방법 (1) | 2023.02.26 |
[ HTTP / 네트워크 ] @RestController - API GET 방식 사용하는 방법 (0) | 2023.02.26 |
[ HTTP / 네트워크 ] 웹 개발 개론 -(2)HTTP Protocol (0) | 2023.02.24 |
[ HTTP / 네트워크 ] 웹 개발 개론 -(1) 웹 개발이란? (0) | 2023.02.24 |