Skip to content

SpeedSpringStudy/boseong

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Week#1

Week#1-Step#1
  • ์ƒํ’ˆ ์กฐํšŒ

    • ์ƒํ’ˆ ๋ชฉ๋ก์„ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ
    • HTTP ๋ฉ”์„œ๋“œ: GET
    • ์—”๋“œํฌ์ธํŠธ: /api/products
  • ์ƒํ’ˆ ์ถ”๊ฐ€

    • ์ƒˆ๋กœ์šด ์ƒํ’ˆ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ
    • HTTP ๋ฉ”์„œ๋“œ: POST
    • ์—”๋“œํฌ์ธํŠธ: /api/products
  • ์ƒํ’ˆ ์ˆ˜์ •

    • ๊ธฐ์กด ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ธฐ๋Šฅ
    • HTTP ๋ฉ”์„œ๋“œ: PUT
    • ์—”๋“œํฌ์ธํŠธ: /api/products/{id}
  • ์ƒํ’ˆ ์‚ญ์ œ

    • ํŠน์ • ID๋ฅผ ๊ฐ€์ง„ ์ƒํ’ˆ์„ ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋Šฅ
    • HTTP ๋ฉ”์„œ๋“œ: DELETE
    • ์—”๋“œํฌ์ธํŠธ: /api/products/{id}
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-07-06 แ„‹แ…ฉแ„’แ…ฎ 4 14 29
Week#1-Step#2

step1 - ์กฐํšŒ, ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ API

  • ์ƒํ’ˆ ์กฐํšŒ

    • ์ƒํ’ˆ ๋ชฉ๋ก์„ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ
    • HTTP ๋ฉ”์„œ๋“œ: GET
    • ์—”๋“œํฌ์ธํŠธ: /api/products
  • ์ƒํ’ˆ ์ถ”๊ฐ€

    • ์ƒˆ๋กœ์šด ์ƒํ’ˆ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ
    • HTTP ๋ฉ”์„œ๋“œ: POST
    • ์—”๋“œํฌ์ธํŠธ: /api/products
  • ์ƒํ’ˆ ์ˆ˜์ •

    • ๊ธฐ์กด ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ธฐ๋Šฅ
    • HTTP ๋ฉ”์„œ๋“œ: PUT
    • ์—”๋“œํฌ์ธํŠธ: /api/products/{id}
  • ์ƒํ’ˆ ์‚ญ์ œ

    • ํŠน์ • ID๋ฅผ ๊ฐ€์ง„ ์ƒํ’ˆ์„ ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋Šฅ
    • HTTP ๋ฉ”์„œ๋“œ: DELETE
    • ์—”๋“œํฌ์ธํŠธ: /api/products/{id}

step2 - ๊ด€๋ฆฌ์ž ํ™”๋ฉด

  • ์ƒํ’ˆ ๋ชฉ๋ก ํ™”๋ฉด

    • ์ƒํ’ˆ ๋ชฉ๋ก์„ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ๊ธฐ๋Šฅ
    • HTML ํŽ˜์ด์ง€: templates/products.html
    • ์ ‘์† ๋ฐฉ๋ฒ• : localhost:8080/products
    • ์ƒํ’ˆ ๋ชฉ๋ก๊ณผ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์˜ ์ƒํ’ˆ ์ถ”๊ฐ€ ๋ฒ„ํŠผ
    • ๊ฐ ์ƒํ’ˆ ์šฐ์ธก ์ƒํ’ˆ ์ˆ˜์ • ๋ฒ„ํŠผ๊ณผ ์ƒํ’ˆ ์‚ญ์ œ ๋ฒ„ํŠผ
  • ์ƒํ’ˆ ์ถ”๊ฐ€ ํ™”๋ฉด

    • ์ƒˆ๋กœ์šด ์ƒํ’ˆ์„ ์ถ”๊ฐ€ํ•˜๋Š” ํ™”๋ฉด
    • HTML ํŽ˜์ด์ง€: templates/product_form.html
    • ํผ์„ ํ†ตํ•ด ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ถ”๊ฐ€
  • ์ƒํ’ˆ ์ˆ˜์ • ํ™”๋ฉด

    • ๊ธฐ์กด ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ํ™”๋ฉด
    • HTML ํŽ˜์ด์ง€: templates/product_edit_form.html
    • ํผ์„ ํ†ตํ•ด ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ˆ˜์ •
  • AJAX๋ฅผ ํ†ตํ•œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

    • ์ƒํ’ˆ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ ์‹œ ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ ์—†์ด ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌ
    • fetch API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€ ํ†ต์‹ 
Week#1-Step#3

step3 - JDBC ์ ์šฉ ๋ฐ ๋ฆฌํŒฉํ† ๋ง

๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ

  • JDBC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.
  • ์ƒํ’ˆ ์ •๋ณด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ  ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค.

๊ตฌํ˜„ ๋ชฉ๋ก

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์ƒ์„ฑ
    • Product ํ…Œ์ด๋ธ” ์ƒ์„ฑ
  • JDBC DAO ๊ตฌํ˜„
    • ProductDao ํด๋ž˜์Šค ๊ตฌํ˜„
  • ์ปจํŠธ๋กค๋Ÿฌ ๋ฆฌํŒฉํ† ๋ง
    • ๊ธฐ์กด์˜ HashMap ๋Œ€์‹  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ProductController ์ˆ˜์ •
  • ์ƒํ’ˆ ์ถ”๊ฐ€/์ˆ˜์ • ์‹œ DB ์ฒ˜๋ฆฌ
    • ์ƒํ’ˆ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ • ์‹œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜ํ•˜๋„๋ก ๋กœ์ง ์ˆ˜์ •
  • ์ƒํ’ˆ ์กฐํšŒ ์‹œ DB ์‚ฌ์šฉ
    • ์ƒํ’ˆ ์กฐํšŒ ์‹œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ •๋ณด ์กฐํšŒ
  • ์ƒํ’ˆ ์‚ญ์ œ ์‹œ DB ์‚ฌ์šฉ
    • ์ƒํ’ˆ ์‚ญ์ œ ์‹œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ •๋ณด ์‚ญ์ œ

Week2

Week#2-Step#1

step1 - ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐ ์˜ˆ์™ธ์ฒ˜๋ฆฌ

๊ธฐ๋Šฅ ๊ตฌํ˜„

  1. ์ƒํ’ˆ ์ถ”๊ฐ€, ์ˆ˜์ • ์‹œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    • ์ƒํ’ˆ ์ด๋ฆ„์€ ๊ณต๋ฐฑ ํฌํ•จ ์ตœ๋Œ€ 15์ž๊นŒ์ง€ ์ž…๋ ฅ ๊ฐ€๋Šฅ
    • ๊ฐ€๋Šฅํ•œ ํŠน์ˆ˜ ๋ฌธ์ž: ( ), [ ], +, -, &, /, _
    • "์นด์นด์˜ค"๊ฐ€ ํฌํ•จ๋œ ๋ฌธ๊ตฌ๋Š” ๋‹ด๋‹น MD์™€ ํ˜‘์˜ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
Week#2-Step#2

๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž…

  • email, password ๋ฅผ ํ†ตํ•œ ํšŒ์›๊ฐ€์ž…
  • ์œ ์ € ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋กœ๊ทธ์ธ

ํ† ํฐ ๋ฐœ๊ธ‰

  • ๋กœ๊ทธ์ธ์ด ์™„๋ฃŒ๋œ๋‹ค๋ฉด ํ† ํฐ ์ œ๊ณต (bearer ๋ฐฉ์‹ -> JWT ์‚ฌ์šฉ)
Week#2-Step#3

์œ„์‹œ๋ฆฌ์ŠคํŠธ ์ถ”๊ฐ€

  • ์œ ์ € ์•„์ด๋””๋กœ ์‹๋ณ„ ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ

Week3

Week#3-Step#1

๊ธฐ์กด ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

  • ์—”ํ‹ฐํ‹ฐ, ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ž‘์„ฑ
  • ๊ทธ์— ๋งž๊ฒŒ ์„œ๋น„์Šค ์ˆ˜์ •
  • Dao ์‚ญ์ œ
Week#3-Step#2

spring-gift-jpa

step1 - JPA ์ ์šฉ

  1. ๊ธฐ์กด ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
    • ์—”ํ‹ฐํ‹ฐ, ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ž‘์„ฑ
    • ๊ทธ์— ๋งž๊ฒŒ ์„œ๋น„์Šค ์ˆ˜์ •
    • Dao ์‚ญ์ œ

step2 - ์—”ํ‹ฐํ‹ฐ ๋ชจ๋ธ๋ง

  1. ์—”ํ‹ฐํ‹ฐ ์—ฐ๊ด€ ๊ด€๊ณ„ ์„ค์ •
    • Wish ์—”ํ‹ฐํ‹ฐ๊ฐ€ User, Product ์ฐธ์กฐํ•˜๋„๋ก ํ•จ
    • user_id, product_id๋ฅผ FK๋กœ ๊ฐ€์ง€๋„๋ก ์„ค์ •
Week#3-Step#3

๊ณผ์ œ ์ง„ํ–‰ ์š”๊ตฌ ์‚ฌํ•ญ

์ƒํ’ˆ๊ณผ ์œ„์‹œ ๋ฆฌ์ŠคํŠธ ๋ณด๊ธฐ์— ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ๊ตฌํ˜„ํ•œ๋‹ค.

  • ๋Œ€๋ถ€๋ถ„์˜ ๊ฒŒ์‹œํŒ์€ ๋ชจ๋“  ๊ฒŒ์‹œ๊ธ€์„ ํ•œ ๋ฒˆ์— ํ‘œ์‹œํ•˜์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋กœ ๋‚˜๋ˆ„์–ด ํ‘œ์‹œํ•œ๋‹ค. ์ •๋ ฌ ๋ฐฉ๋ฒ•์„ ์„ค์ •ํ•˜์—ฌ ๋ณด๊ณ  ์‹ถ์€ ์ •๋ณด์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • ํŽ˜์ด์ง€๋„ค์ด์…˜์€ ์›ํ•˜๋Š” ์ •๋ ฌ ๋ฐฉ๋ฒ•, ํŽ˜์ด์ง€ ํฌ๊ธฐ ๋ฐ ํŽ˜์ด์ง€์— ๋”ฐ๋ผ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ

ํžŒํŠธ

์ด๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ๋Š” **Pageable**์ด๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ List, Slice, Page ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ˜ํ™˜ ํƒ€์ž…์„ ์ œ๊ณตํ•œ๋‹ค.

Week#4

Week#4-Step#1

๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ

์ƒํ’ˆ ์ •๋ณด์— ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ƒํ’ˆ๊ณผ ์นดํ…Œ๊ณ ๋ฆฌ ๋ชจ๋ธ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•œ๋‹ค.

  • ์นดํ…Œ๊ณ ๋ฆฌ๋Š” 1์ฐจ ์นดํ…Œ๊ณ ๋ฆฌ๋งŒ ์žˆ์œผ๋ฉฐ 2์ฐจ ์นดํ…Œ๊ณ ๋ฆฌ๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์นดํ…Œ๊ณ ๋ฆฌ๋Š” ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ด€๋ฆฌ์ž ํ™”๋ฉด์—์„œ ์ƒํ’ˆ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
    • ๊ตํ™˜๊ถŒ, ์ƒํ’ˆ๊ถŒ, ๋ทฐํ‹ฐ, ํŒจ์…˜, ์‹ํ’ˆ, ๋ฆฌ๋น™/๋„์„œ, ๋ ˆ์ €/์Šคํฌ์ธ , ์•„ํ‹ฐ์ŠคํŠธ/์บ๋ฆญํ„ฐ, ์œ ์•„๋™/๋ฐ˜๋ ค, ๋””์ง€ํ„ธ/๊ฐ€์ „, ์นด์นด์˜คํ”„๋ Œ์ฆˆ, ํŠธ๋ Œ๋“œ ์„ ๋ฌผ, ๋ฐฑํ™”์ 

์•„๋ž˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด HTTP ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค.

Request

GET /api/categories HTTP/1.1

Response

HTTP/1.1 200
Content-Type: application/json

{
โ€œidโ€: 91,
โ€œnameโ€: โ€œ๊ตํ™˜๊ถŒโ€,
โ€œcolorโ€: โ€œ#6c95d1โ€,
โ€œimageUrlโ€: โ€œhttps://gift-s.kakaocdn.net/dn/gift/images/m640/dimm_theme.pngโ€,
โ€œdescriptionโ€: โ€œโ€
}

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ

  • ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ ์ ˆํ•œ ํ…Œ์ŠคํŠธ ์ „๋žต์„ ์ƒ๊ฐํ•˜๊ณ  ์ž‘์„ฑํ•œ๋‹ค.
  • ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. 1์ฐจ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜๊ณ , ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ด€๋ฆฌ์ž ํ™”๋ฉด์—์„œ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
Week#4-Step#2

step 2 - ์˜ต์…˜ ์ถ”๊ฐ€

์˜ต์…˜ ์ถ”๊ฐ€

  • ์˜ต์…˜ ๊ตฌํ˜„
    • ๊ฐ ์ƒํ’ˆ์˜ ์˜ต์…˜๋ณ„ ์ž”์—ฌ ์ˆ˜๋Ÿ‰ ์ €์žฅ api๊ตฌํ˜„
Week#4-Step#3,4

step 3,4 ์ฐจ๊ฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • ๋™์‹œ์„ฑ ์ œ์–ด ํ•„์š”

Week#5

Week#5-Step#1

๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ

์นด์นด์˜ค ๋กœ๊ทธ์ธ์„ ํ†ตํ•ด ์ธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋ฐ›๊ณ , ์ธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ํ† ํฐ์„ ๋ฐ›์€ ํ›„ ํ–ฅํ›„ ์นด์นด์˜ค API ์‚ฌ์šฉ์„ ์ค€๋น„ํ•œ๋‹ค.

  • ์นด์นด์˜ค๊ณ„์ • ๋กœ๊ทธ์ธ์„ ํ†ตํ•ด ์ธ์ฆ ์ฝ”๋“œ๋ฅผ ๋ฐ›๋Š”๋‹ค.
  • ํ† ํฐ ๋ฐ›๊ธฐ๋ฅผ ์ฝ๊ณ  ์•ก์„ธ์Šค ํ† ํฐ์„ ์ถ”์ถœํ•œ๋‹ค.
  • ์•ฑ ํ‚ค, ์ธ๊ฐ€ ์ฝ”๋“œ๊ฐ€ ์ ˆ๋Œ€ ์œ ์ถœ๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.
  • (์„ ํƒ) ์ธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์ด ๋ถˆํŽธํ•œ ๊ฒฝ์šฐ ์นด์นด์˜ค ๋กœ๊ทธ์ธ ํ™”๋ฉด์„ ๊ตฌํ˜„ํ•œ๋‹ค.

์‹ค์ œ ์นด์นด์˜ค ๋กœ๊ทธ์ธ์€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋œ๋‹ค. แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-08-04 แ„‹แ…ฉแ„’แ…ฎ 1 07 03

ํ•˜์ง€๋งŒ ์ง€๊ธˆ๊ณผ ๊ฐ™์ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—†๋Š” ์ƒํ™ฉ์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ํš๋“ํ•œ๋‹ค.

  1. ๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ > ์•ฑ ์„ค์ • > ์•ฑ ํ‚ค๋กœ ์ด๋™ํ•˜์—ฌ REST API ํ‚ค๋ฅผ ๋ณต์‚ฌํ•œ๋‹ค.
  2. https://kauth.kakao.com/oauth/authorize?scope=talk_message&response_type=code&redirect_uri=http://localhost:8080&client_id=**`{REST_API_KEY}`**์— ์ ‘์†ํ•˜์—ฌย ์นด์นด์˜คํ†ก ๋ฉ”์‹œ์ง€ ์ „์†ก์— ๋™์˜ํ•œ๋‹ค.
  3. http://localhost:8080/?code=**`{AUTHORIZATION_CODE}`**์—์„œ ์ธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ถ”์ถœํ•œ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ๋ก

์นด์นด์˜ค ํ”Œ๋žซํผ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ด๋ฆ„, ์•„์ด์ฝ˜, ์ƒํ’ˆ๋ช…, ์„œ๋น„์Šค๋ช…, ํšŒ์‚ฌ๋ช…, ๋กœ๊ณ , ์‹ฌ๋ฒŒ ๋“ฑ์— ์นด์นด์˜ค์˜ ์ƒํ‘œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ(์ œ17์กฐ(์ƒํ‘œ ์‚ฌ์šฉ ์‹œ ์˜๋ฌด ์‚ฌํ•ญ)), ์•„๋ž˜ ํ•ญ๋ชฉ๋“ค์— "์นด์นด์˜ค"์‚ฌ์šฉ ๋ถˆ๊ฐ€ํ•˜๋‹ค

  • ์•ฑ ์ด๋ฆ„:
  • ํšŒ์‚ฌ๋ช…:
  • ์นดํ…Œ๊ณ ๋ฆฌ:

ํ† ํฐ ์š”์ฒญ

ํ† ํฐ ๋ฐ›๊ธฐ์— ๋”ฐ๋ฅด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ดย **RequestEntity**๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

var url = "https://kauth.kakao.com/oauth/token";
var headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED_VALUE);
var body = new LinkedMultiValueMap<String, String>();
body.add("grant_type", "authorization_code");
body.add("client_id", properties.clientId());
body.add("redirect_uri", properties.redirectUri());
body.add("code", authorizationCode);
var request = new RequestEntity<>(body, headers, HttpMethod.POST, URI.create(url));

์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ

  • ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • RestTemplate์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐย Spring RestTemplate Error Handling๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.

HTTP Client

  • REST Clients
  • ์‚ฌ์šฉํ•  ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ ํƒํ•  ๋•Œ ์–ด๋–ค ๊ธฐ์ค€์„ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?
  • ํด๋ผ์ด์–ธํŠธ ์ธ์Šคํ„ด์Šค๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ƒ์„ฑ/๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€?

๋” ์ ์ ˆํ•œ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ?

  • ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ํŒŒ์‹ฑํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?
  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์—ฐ๊ฒฐํ•  ๋•Œ ๋‹จ์œ„/ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?

API ํ˜ธ์ถœ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?

  • ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธธ๋ฉด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ? ๋ช‡ ์ดˆ๊ฐ€ ์ ๋‹นํ• ๊นŒ?
  • ์˜ค๋ฅ˜ ์ฝ”๋“œ๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ• ๊นŒ?
  • ์‘๋‹ต ๊ฐ’์„ ํŒŒ์‹ฑํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
Week#5-Step#2

๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ

์นด์นด์˜คํ†ก ๋ฉ”์‹œ์ง€ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ๋ฌธํ•˜๊ธฐ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค.

  • ์ฃผ๋ฌธํ•  ๋•Œ ์ˆ˜๋ น์ธ์—๊ฒŒ ๋ณด๋‚ผ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ƒํ’ˆ ์˜ต์…˜๊ณผ ํ•ด๋‹น ์ˆ˜๋Ÿ‰์„ ์„ ํƒํ•˜์—ฌ ์ฃผ๋ฌธํ•˜๋ฉด ํ•ด๋‹น ์ƒํ’ˆ ์˜ต์…˜์˜ ์ˆ˜๋Ÿ‰์ด ์ฐจ๊ฐ๋œ๋‹ค.
  • ํ•ด๋‹น ์ƒํ’ˆ์ด ์œ„์‹œ ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ๊ฒฝ์šฐ ์œ„์‹œ ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ญ์ œํ•œ๋‹ค.
  • ๋‚˜์—๊ฒŒ ๋ณด๋‚ด๊ธฐ๋ฅผ ์ฝ๊ณ  ์ฃผ๋ฌธ ๋‚ด์—ญ์„ ์นด์นด์˜คํ†ก ๋ฉ”์‹œ์ง€๋กœ ์ „์†กํ•œ๋‹ค.
    • ๋ฉ”์‹œ์ง€๋Š”ย ๋ฉ”์‹œ์ง€ ํ…œํ”Œ๋ฆฟ์˜ ๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ์ด๋‚˜ ์‚ฌ์šฉ์ž ์ •์˜ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์œ ๋กญ๊ฒŒ ์ž‘์„ฑํ•œ๋‹ค.

์•„๋ž˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด HTTP ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค.

Request

POST /api/orders HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json

{
    "optionId": 1,
    "quantity": 2,
    "message": "Please handle this order with care."
}

Response

HTTP/1.1 201 Created
Content-Type: application/json

{
    "id": 1,
    "optionId": 1,
    "quantity": 2,
    "orderDateTime": "2024-07-21T10:00:00",
    "message": "Please handle this order with care."
}

์‹ค์ œ ์นด์นด์˜คํ†ก ๋ฉ”์‹œ์ง€๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ „์†ก๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ๋Š” ์ˆ˜์‹ ์ž๊ฐ€ ๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์นด์นด์˜คํ†ก ์นœ๊ตฌ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ๋Š” ์ƒ๋žตํ•œ๋‹ค. แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-08-08 แ„‹แ…ฉแ„’แ…ฎ 4 20 30

์ฃผ๋ฌธํ•˜๊ธฐ API๋ฅผ ๋งŒ๋“œ๋Š” ๋ฌธ์ œ๋‹ค.

์ด์ „์— ๊ณ„ํšํ•œ๋Œ€๋กœ, Order ์—”ํ‹ฐํ‹ฐ์™€ ๊ทธ ์™ธ ๋ ˆ์ด์–ด๋“ค ๋งŒ๋“ค๊ณ 

๊ฑฐ๊ธฐ์— User ์™€ ProductOption ์„ ๋‹ค๋Œ€์ผ๋กœ ์—ฐ๊ด€์ง€์–ด์„œ ๊ตฌํ˜„ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

# spring-gift-order

## step 1 - ์นด์นด์˜ค ๋กœ๊ทธ์ธ

- **์นด์นด์˜ค ๋กœ๊ทธ์ธ ๊ตฌํ˜„**
    - [x] ๊ธฐ์กด ๋กœ๊ทธ์ธ์€ ์ผ๋‹จ ๊ทธ๋Œ€๋กœ ์œ ์ง€
    - [x] http://localhost:8080/oauth/kakao ์— ์ ‘์† ์‹œ, ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
    - [x] ํ•ด๋‹น ํŽ˜์ด์ง€์—์„œ ๋กœ๊ทธ์ธ ์™„๋ฃŒ ์‹œ, ์ธ๊ฐ€ ์ฝ”๋“œ๋ฅผ http://localhost:8080/oauth/kakao/callback ์œผ๋กœ ์ „๋‹ฌ
    - [x] ์ธ๊ฐ€ ์ฝ”๋“œ ์ถ”์ถœ ํ›„, ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด access token ๋ฐœ๊ธ‰

- **์ถ”๊ฐ€ ๊ธฐ๋Šฅ**
    - [x] ์นด์นด์˜ค ๋กœ๊ทธ์ธ ์‹œ, ์œ ์ € ์ •๋ณด๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค์˜ User์—๋„ ๋“ฑ๋กํ•˜์—ฌ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ ๋˜๋„๋ก ํ•จ

## step 2 - ์ฃผ๋ฌธํ•˜๊ธฐ

- **์ฃผ๋ฌธํ•˜๊ธฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„**
  - [ ] `Order` ์—”ํ‹ฐํ‹ฐ, Dto, ๋ ˆํฌ์ง€ํ† ๋ฆฌ, ์„œ๋น„์Šค, ์ปจํŠธ๋กค๋Ÿฌ ๊ตฌํ˜„
  - [ ] ์ƒํ’ˆ ์˜ต์…˜๊ณผ ์ˆ˜๋Ÿ‰์„ ์„ ํƒํ•˜์—ฌ ์ฃผ๋ฌธ ์‹œ, ํ•ด๋‹น ์ƒํ’ˆ ์˜ต์…˜์˜ ์ˆ˜๋Ÿ‰ ์ฐจ๊ฐ
  - [ ] ํ•ด๋‹น ์ƒํ’ˆ์ด ์œ„์‹œ ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ๊ฒฝ์šฐ ์œ„์‹œ ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ญ์ œ
  
- **์นด์นด์˜คํ†ก ๋ฉ”์‹œ์ง€ API ํ˜ธ์ถœ**
  - [ ] `access token`์„ ๊ฒ€์ฆํ•˜์—ฌ ์นด์นด์˜คํ†ก ๋ฉ”์‹œ์ง€ ์ „์†ก API ํ˜ธ์ถœ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published