๋ฒ ์˜ค
DCode
๋ฒ ์˜ค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (218)
    • ๊ณต์ง€์‚ฌํ•ญ (1)
    • ์žก์„ค (1)
    • Programming (33)
      • [C] (1)
      • [Java] (4)
      • [Python] (2)
      • [Android] (2)
      • [Network] (0)
      • [Operation System] (2)
      • [Spring Boot] (22)
      • [Docker] (0)
    • Algorithm (31)
      • ์ž๋ฃŒ๊ตฌ์กฐ (2)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Java) (14)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (๊ธฐ์ดˆ) (15)
    • Coding Test (131)
      • BOJ (131)
      • Algospat (0)
    • ์ด๋ก ์ ์ธ๊ฑฐ (14)
      • ๋ณด์•ˆ (5)
      • ์˜ค๋ฅ˜ ํ•ด๊ฒฐ (2)
      • ๋””์ž์ธ ํŒจํ„ด (5)
      • ๋„คํŠธ์›Œํฌ (1)
      • ๊ธฐํƒ€ (1)
    • ์ตœ์‹ ๊ธฐ์ˆ  (4)
      • ๋ธ”๋ก์ฒด์ธ (1)
    • [Project] (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿˆโ€โฌ› GitHub
  • ๐Ÿ“ซ ๋ฐฉ๋ช…๋ก
  • ๐Ÿ”– ํƒœ๊ทธ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๋ฒ ์˜ค

DCode

Programming/[Spring Boot]

POST API ๋งŒ๋“ค๊ธฐ

2023. 1. 20. 19:35

POST API

๐Ÿ’ก
์ €์žฅํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋‚˜ ๊ฐ’์„ body์— ๋‹ด์•„์„œ ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹

body๋Š” ๋ณดํ†ต JSON ํ˜•์‹์œผ๋กœ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค. (XML๋„ ์žˆ๊ธดํ•˜๋‹ค.)


๊ณตํ†ต URL ์ƒ์„ฑํ•˜๊ธฐ

package com.springboot.api.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/v1/post-api")
public class PostController {
    
}

@RequestBody๋ฅผ ํ™œ์šฉํ•œ POST ๋ฉ”์„œ๋“œ ๊ตฌํ˜„

2๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.

  1. ์–ด๋–ค ํ˜•ํƒœ๋กœ ๊ฐ’์ด ๋“ค์–ด์˜ค๊ฒŒ ๋  ์ง€ ํŠน์ •ํ•˜๊ธฐ ์–ด๋ ค์šธ ๋•Œ

    โ‡’ Map ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋งคํ•‘ํ•œ๋‹ค.

    @PostMapping(value="/member")
    public String postMember(@RequestBody Map<String, Object> postData){
        StringBuilder sb = new StringBuilder();
    
        postData.entrySet().forEach(map->{
            sb.append(map.getKey()+" : "+map.getValue()+"\n");
        });
    
        return sb.toString();
    }

    ๋‹ค์Œ URI์™€ BODY๋ฅผ POST ๋ฐฉ์‹์œผ๋กœ ์ „๋‹ฌํ•œ ๊ฒฐ๊ณผ์ด๋‹ค.

    ๐Ÿ’ก
    http://localhost:8080/api/v1/post-api/member
    {
      "name":"Hong",
      "age":2400,
      "email":"test@test.com"
    }
  1. ์–ด๋–ค ํ˜•ํƒœ๋กœ ๊ฐ’์ด ๋“ค์–ด์˜ค๊ฒŒ ๋  ์ง€ ํŠน์ •ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ

    โ‡’ DTO ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋งคํ•‘ํ•œ๋‹ค.

    @PostMapping(value="/member2")
        public String postMember2(@RequestBody MemberDTO memberDTO){
            return memberDTO.toString();
        }

    ๋‹ค์Œ URI์™€ BODY๋ฅผ POST ๋ฐฉ์‹์œผ๋กœ ์ „๋‹ฌํ•œ ๊ฒฐ๊ณผ์ด๋‹ค.

    ๐Ÿ’ก
    http://localhost:8080/api/v1/post-api/member
    {
      "name":"Hong",
      "organization":"test",
      "email":"test@test.com"
    }

Q1. DTO ๋ฐฉ์‹์—์„œ ์—†๋Š” ์†์„ฑ์Œ์„ ์ง‘์–ด๋„ฃ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฐ€?

๋‹ค์Œ URI์™€ BODY๋ฅผ POST ๋ฐฉ์‹์œผ๋กœ ์ „๋‹ฌํ•œ ๊ฒฐ๊ณผ์ด๋‹ค.

๐Ÿ’ก
http://localhost:8080/api/v1/post-api/member2
{
  "name":"Hong",
  "organization":"test",
  "email":"test@test.com",
  "age":123123
}

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—†๋Š” ๋‚ด์šฉ์€ ์ถ”๊ฐ€๋˜์ง€ ์•Š๋Š”๋‹ค.

Q2. DTO ๋ฐฉ์‹์—์„œ ์†์„ฑ์„ ๋ถ€์กฑํ•˜๊ฒŒ ์ง‘์–ด๋„ฃ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฐ€?

๋‹ค์Œ URI์™€ BODY๋ฅผ POST ๋ฐฉ์‹์œผ๋กœ ์ „๋‹ฌํ•œ ๊ฒฐ๊ณผ์ด๋‹ค.

๐Ÿ’ก
http://localhost:8080/api/v1/post-api/member2
{
  "name":"Hong",
  "organization":"test"
}

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—†๋Š” ๋‚ด์šฉ์€ null ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.

๊ฐ’์ด ๋“ค์–ด์˜ค๋Š” ํ˜•ํƒœ๊ฐ€ ๊ฒฐ์ •๋˜๋ฉด DTO ๋ฐฉ์‹์œผ๋กœ ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๊ฐ€ ์™„์„ฑ๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.



Uploaded by N2T

'Programming > [Spring Boot]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Swagger๋ฅผ ํ™œ์šฉํ•œ REST API ๋ช…์„ธ ๋ฌธ์„œํ™”  (0) 2023.01.25
PUT/DELETE API ๋งŒ๋“ค๊ธฐ  (1) 2023.01.21
GET API ๋งŒ๋“ค๊ธฐ  (0) 2023.01.19
ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ  (0) 2023.01.19
Talend API Tester๋ฅผ ํ†ตํ•ด ๋™์ž‘ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด์ž  (0) 2023.01.19
    'Programming/[Spring Boot]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • Swagger๋ฅผ ํ™œ์šฉํ•œ REST API ๋ช…์„ธ ๋ฌธ์„œํ™”
    • PUT/DELETE API ๋งŒ๋“ค๊ธฐ
    • GET API ๋งŒ๋“ค๊ธฐ
    • ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ
    ๋ฒ ์˜ค
    ๋ฒ ์˜ค

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”