minlog
article thumbnail

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 + '\'' +
                '}';
    }
}

 

 

- 실행결과

 

 

 

 

profile

minlog

@jimin-log

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