๐Ÿ”๊ฒ€์ƒ‰ API ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์—ˆ์–ด์š”!!

์ž„๊ทœ์„ฑยท2025๋…„ 5์›” 5์ผ

ํ•œ ์Šคํ…์”ฉ ์‹ ์ค‘ํžˆ

๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ญ˜ ์›ํ•˜๋Š”์ง€ ๋ถ€ํ„ฐ ๊ธฐ๋Šฅ์ด ์ •์˜ ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ UX์„ค๊ณ„ -> UI์„ค๊ณ„ -> API์„ค๊ณ„ -> API๊ตฌํ˜„ ๊ฐ Step์—์„œ์˜ ๊ณ ๋ฏผ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

1. UX

์–ด๋–ค ๊ฒƒ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ• ๊นŒ?

๋‹จ์ˆœํžˆ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•œ๋‹ค๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ์ž์˜ ์ง„์ •ํ•œ Needs๋Š” ๋ฌด์—‡์ผ๊นŒ์—์„œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ 3๊ฐœ๋กœ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ” Need 1. ํ˜„์žฌ ์œ„์น˜์—์„œ ๊ฐ€๊นŒ์šด ์ฃผ์ฐจ์žฅ์„ ์•Œ๊ณ  ์‹ถ์„ ๋•Œ
โ€œ์•ฝ์ˆ˜์—ญ ๊ทผ์ฒ˜์— ์ฃผ์ฐจ์žฅ์ด ์žˆ๋‚˜?โ€
โœ… ์‚ฌ์šฉ์ž๋Š” ์ง€๋„๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ์ฃผ๋ณ€ ํƒ์ƒ‰์„ ์›ํ•จ
โœ… ๊ฒ€์ƒ‰ ์—†์ด๋„ ํ˜„์žฌ ์œ„์น˜ ์ค‘์‹ฌ ๋ฐ˜๊ฒฝ ์ฃผ์ฐจ์žฅ ์กฐํšŒ ๊ธฐ๋Šฅ ํ•„์š”


๐Ÿ” Need 2. ํŠน์ • ์žฅ์†Œ ๊ทผ์ฒ˜์˜ ์ฃผ์ฐจ์žฅ์„ ์•Œ๊ณ  ์‹ถ์„ ๋•Œ
โ€œ์•ฝ์ˆ˜์—ญ ํšŸ์ง‘์—์„œ ์นœ๊ตฌ๋“ค์ด๋ž‘ ๋งŒ๋‚˜๊ธฐ๋กœ ํ–ˆ๋Š”๋ฐ, ๊ทผ์ฒ˜์— ์ฃผ์ฐจ์žฅ ์žˆ๋‚˜?โ€
โœ… ์‚ฌ์šฉ์ž๋Š” ๊ฐ€๊ฒŒ/์žฅ์†Œ๋ช…์„ ์ž…๋ ฅํ•˜๊ณ  ๊ทธ ์ฃผ๋ณ€ ์ฃผ์ฐจ์žฅ์„ ํƒ์ƒ‰ํ•˜๊ณ ์ž ํ•จ
โœ… ์žฅ์†Œ ๊ฒ€์ƒ‰ โ†’ ํ•ด๋‹น ์œ„์น˜ ์ค‘์‹ฌ์œผ๋กœ ์ง€๋„ ์ด๋™ โ†’ ์ฃผ๋ณ€ ์ฃผ์ฐจ์žฅ ํ‘œ์‹œ
(๋ฐ‘์˜ UI๋ฅผ ํ™•์ธํ•˜๋ฉด ์ดํ•ด๊ฐ€ ์‰ฝ๋‹ค..!!)


๐Ÿ” Need 3. ์ฃผ์ฐจ์žฅ๋ช… "์˜ค์ œ์ œ%" ์ด๋ฆ„์„ ๊ฐ€์ง€๋Š” ์ฃผ์ฐจ์žฅ
โ€œ๊ทธ๋•Œ ๊ฐ”๋˜ ์ฃผ์ฐจ์žฅ์ด โ€˜์˜ค์ œ์ œ ์ฃผ์ฐจ์žฅโ€™์ด์—ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐโ€ฆโ€
โœ… ์‚ฌ์šฉ์ž๋Š” ๊ธฐ์–ต๋‚˜๋Š” ์ด๋ฆ„ ์ผ๋ถ€๋งŒ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹ถ์–ดํ•จ
โœ… ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์ฃผ์ฐจ์žฅ๋ช… ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ์ œ๊ณต ํ•„์š”


์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ์ž์˜ Needs์™€ ํ•ต์‹ฌ UX๋ฅผ ์„ค๊ณ„ํ–ˆ๊ณ  ํ•ด๋‹น ์•„๋ž˜์— UI๋กœ ๊ตฌํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

2. UI

UX๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด UI๋กœ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.
์•„๋ž˜๋Š” ๊ฒฐ๊ณผ ์ž…๋‹ˆ๋‹ค. ๊ฐ ๋ถ€์—ฐ์„ค๋ช…์— UX๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.


3. API ์„ค๊ณ„

1. ๋ณ‘๋ชฉ ๋ฐœ์ƒ ์˜ˆ์ƒ ๊ฐ€๋Šฅ

ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ ์‹œ API์—์„œ ๊ฒ€์ƒ‰ ์‘๋‹ต์„ ์ค€๋‹ค๋ฉด 1)์ฃผ์ฐจ์žฅ DB ํƒ์ƒ‰ 2)์นด์นด์˜ค ๋กœ์ปฌ ๊ฒ€์ƒ‰ APIํ˜ธ์ถœ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
1)์ฃผ์ฐจ์žฅ DB ํƒ์ƒ‰ ์™„๋ฃŒํ–ˆ์ง€๋งŒ 2)์นด์นด์˜ค ๋กœ์ปฌ ๊ฒ€์ƒ‰ APIํ˜ธ์ถœ ์ง„ํ–‰์ค‘์ธ ๋ณ‘๋ชฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…

API๋ฅผ ๋‘๊ฐœ๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค!!!

1. Mathing๋œ ํ‚ค์›Œ๋“œ์™€ ์ธ๋ฑ์Šค ํ‘œ์‹œ

UI์ ์œผ๋กœ ํ‚ค์›Œ๋“œ์™€ ๋งค์นญ๋œ ํ•˜์ด๋ผ์ดํŒ…์„ ํ•˜๊ฒŒ๋œ๋‹ค๋ฉด ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ํ•ด๋‹น ํ•„๋“œ๋„ Response DTO์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค!

์‘๋‹ต JSON ์ผ๋ถ€

"parkingZones": [
      {
		      "matchedInfo": [
				  {
				    "field": "zoneName",
				    "value": "์˜ค์ œ์ œ ์ฃผ์ฐจ์žฅ",
				    "matchedText": "์˜ค์ œ์ œ",
				    "startIndex": 0,
				    "endIndex": 2
				  },
				  {
				    "field": "cityName",
				    "value": "์„œ์šธํŠน๋ณ„์‹œ",
				    "matchedText": "์„œ์šธ",
				    "startIndex": 0,
				    "endIndex": 1
				  }
				]

4. ๊ตฌํ˜„ ๋ฐ‘ ์ฝ”๋“œ

TDD๋ฐฉ์‹์˜
RED -> GREEN -> REFACTORING
๋‹จ๊ณ„๋ฅผ ์ค€์ˆ˜ํ•˜๋ฉฐ ๊ตฌํ˜„ํ•ด๋ƒˆ์Šต๋‹ˆ๋‹ค.

1. Web client์˜ ํ…Œ์ŠคํŠธ

Web Client ์ธ์Šคํ„ด์Šค๋ฅผ ํ™œ์šฉํ•ด ์™ธ๋ถ€ API๋ฅผ ํ˜ธ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ
ํ•ด๋‹น Web Client๋ฅผ ์–ด๋–ป๊ฒŒ ๋ชจํ‚นํ•˜๊ณ  ๋‹จ์œ„ํ…Œ์ŠคํŠธํ• ์ง€๊ฐ€ ๋ง‰๋ง‰ํ•ด GPTํ•œํ…Œ ๋ฌผ์–ด๋ณด๊ณ  ๊ตฌ๊ธ€ ์„œ์นญ์„ 1์‹œ๊ฐ„ ๋„˜๊ฒŒ ์ง„ํ–‰ํ–ˆ๊ณ  ๊ฒฐ๊ตญ MockWebServer๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์ง์ ‘ Mocking์„ ์•„๋‹ˆ์ง€๋งŒ ์™ธ๋ถ€ API ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค!!

PR ๋งํฌ

1) ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ ์ฝ”๋“œ https://github.com/Team-Devmon-IN-KU/HonorsParking-BE/pull/80
2) ์นด์นด์˜ค ๋กœ์ปฌ ๊ฒ€์ƒ‰ ์ฝ”๋“œ : https://github.com/Team-Devmon-IN-KU/HonorsParking-BE/pull/87


Q1 : ์นด์นด์˜ค ๊ฒ€์ƒ‰์„ ๋„‰๋„‰ํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ๊ฐ€?

1) ์ผ๊ฐ„ 10๋งŒ ์ฟผํ„ฐ ์ดˆ๊ณผ์‹œ ์œ ๋กœ ์š”๊ธˆ ๋ฐœ์ƒ

ref : https://developers.kakao.com/docs/latest/ko/getting-started/quota

2) ๋„‰๋„‰ํ•œ ์‘๋‹ต ๊ฐœ์ˆ˜
๋„ค์ด๋ฒ„ ๋กœ์ปฌ ๊ฒ€์ƒ‰์€ ์ตœ๋Œ€ 5๊ฐœ๋ฐ–์— ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์—†์—ˆ์ง€๋งŒ ์ตœ๋Œ€ 45๊ฐœ ๋ฐ์ดํ„ฐ ์Šต๋“ ๊ฐ€๋Šฅ

5. ๋А๋‚€์ 

UX๋ถ€ํ„ฐ ๊นŠ์€ ๊ฐœ๋ฐœ ์š”์†Œ๊นŒ์ง€ ํ•ด๊ฐ€๋ฉด์„œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์™ธ ๋‹ค๋ฅธ ํŒŒํŠธ๋„ ์ถฉ๋ถ„ํžˆ ์–ด๋ ต๊ณ  ์‹ ์ค‘ํ•œ ์„ ํƒ์ด ํ•„์š”ํ•จ์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค. ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•ž์œผ๋กœ ๋งก์€ ์—…๋ฌด์— ๋Œ€ํ•ด ์ฑ…์ž„๊ฐ์„ ๋” ๋”ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

profile
์‚ถ์˜ ์งˆ์„ ๋†’์—ฌ์ฃผ๋Š” ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€