Skip to content

Latest commit

ย 

History

History
105 lines (81 loc) ยท 3.89 KB

File metadata and controls

105 lines (81 loc) ยท 3.89 KB

API ๋ ˆํผ๋Ÿฐ์Šค

Altsis ํ•™๊ต ์ •๋ณด ์‹œ์Šคํ…œ์˜ ๋ฐฑ์—”๋“œ RESTful API์— ๋Œ€ํ•œ ์ข…ํ•ฉ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค.

๋ชฉ์ฐจ

๋ฌธ์„œ ์„ค๋ช…
API ๊ฐœ์š” RESTful ์„ค๊ณ„ ์›์น™, ์ธ์ฆ, ์—๋Ÿฌ ์ฒ˜๋ฆฌ, ํ”„๋ก ํŠธ์—”๋“œ ์—ฐ๋™ ํŒจํ„ด
์•„์นด๋ฐ๋ฏธ API ์•„์นด๋ฐ๋ฏธ ์ƒ์„ฑ, ์กฐํšŒ, ์„ค์ •, ๋ฐฑ์—…/๋ณต์›
์‚ฌ์šฉ์ž API ๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ, ์‚ฌ์šฉ์ž CRUD, ํ”„๋กœํ•„ ๊ด€๋ฆฌ
ํ•™๊ต API ํ•™๊ต ์ƒ์„ฑ, ์กฐํšŒ, ๊ธฐ๋ก ์–‘์‹ ๊ด€๋ฆฌ
ํ•™๊ธฐ API ํ•™๊ธฐ ์ƒ์„ฑ, ํ™œ์„ฑํ™”, ๊ต๊ณผ๋ชฉ/๊ฐ•์˜์‹ค/์–‘์‹/๊ถŒํ•œ ์„ค์ •
์ˆ˜์—… API ๊ฐ•์˜๊ณ„ํš์„œ, ์ˆ˜๊ฐ•์‹ ์ฒญ, ํ‰๊ฐ€, ํ•™๊ธฐ ๋“ฑ๋ก
๋“ฑ๋ก API ํ•™๊ธฐ ๋“ฑ๋ก ์ƒ์„ฑ, ๋ณต์‚ฌ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ
์ˆ˜๊ฐ• API ์ˆ˜๊ฐ• ๋“ฑ๋ก, ํ‰๊ฐ€ ์ž…๋ ฅ, ๋ฉ”๋ชจ, ์บ˜๋ฆฐ๋” ๋™๊ธฐํ™”
๊ฒŒ์‹œํŒ API ๊ฒŒ์‹œํŒ/๊ฒŒ์‹œ๊ธ€/๋Œ“๊ธ€ CRUD, ์—ญํ•  ๊ธฐ๋ฐ˜ ๊ถŒํ•œ
์บ˜๋ฆฐ๋” API ์ผ์ • ์ƒ์„ฑ/์กฐํšŒ, ๋ฐ˜๋ณต ์ผ์ •, ์‚ฌ์šฉ์ž ์บ˜๋ฆฐ๋”
์ฑ„ํŒ… API ์ฑ„ํŒ…๋ฐฉ, ๋ฉ”์‹œ์ง€, ํŒŒ์ผ ์—…๋กœ๋“œ, ์‹ค์‹œ๊ฐ„ ์ด๋ฒคํŠธ
์•Œ๋ฆผ API ์•Œ๋ฆผ ์ƒ์„ฑ/์กฐํšŒ/ํ™•์ธ, ์•Œ๋ฆผ ์„ค์ •
๋ฆฌ๋งˆ์ธ๋” API ๋…๋ฆฝ ๋ฆฌ๋งˆ์ธ๋”, upcoming ํ†ตํ•ฉ ์กฐํšŒ
Goals API ํ™ˆ/๋ชฉํ‘œ ์œ„์ ฏ ์ง„ํ–‰ ์š”์•ฝ
ํ…Œ๋งˆ ์„ค์ • API ์‚ฌ์šฉ์ž ํ…Œ๋งˆยท์ปค์Šคํ…€ ์ƒ‰์ƒ
AI API Alter(์ „์—ญ ์–ด์‹œ์Šคํ„ดํŠธ), ๊ฐ•์˜๊ณ„ํš์„œ ๊ฒ€ํ† , ๋ชจ๋ธ/ํ‚ค ๊ด€๋ฆฌ
์–‘์‹ API ์–‘์‹ CRUD, ๋ณต์‚ฌ, ๋ณด๊ด€/๋ณต์›, ์—ด๋žŒ ๊ถŒํ•œ
ํ•™์ƒ ๊ธฐ๋ก API ํ•™์ƒ ๊ธฐ๋ก ์กฐํšŒ, ์ˆ˜์ •, ํŒŒ์ผ ์ฒจ๋ถ€
ํŒŒ์ผ API S3 ํŒŒ์ผ ์—…๋กœ๋“œ/๋‹ค์šด๋กœ๋“œ, Pre-Signed URL
๋ฐ์ดํ„ฐ ๋ชจ๋ธ MongoDB ์Šคํ‚ค๋งˆ ์ „์ฒด ๋ช…์„ธ

๋“ฑ๋ก ์‹œ๊ฐ„ํ‘œ ๋ฉ”๋ชจ(/api/memos)๋Š” ์บ˜๋ฆฐ๋” API โ€” Registration Memo์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ๊ตฌ์„ฑ

ํด๋ผ์ด์–ธํŠธ (React + TypeScript)
    |
    |  useAPIv2() ํ›… --- axios (์„ธ์…˜ ์ฟ ํ‚ค)
    |
    v
Express.js ์„œ๋ฒ„
    |
    |  ๋ผ์šฐํŠธ --> ๋ฏธ๋“ค์›จ์–ด(์ธ์ฆ) --> ์ปจํŠธ๋กค๋Ÿฌ
    |
    v
MongoDB (Mongoose) + Redis (์„ธ์…˜) + S3 (ํŒŒ์ผ)

๋น ๋ฅธ ์‹œ์ž‘

๊ธฐ๋ณธ URL

๋ชจ๋“  API๋Š” ๋‹ค์Œ ๊ฒฝ๋กœ๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค:

/api/{๋ฆฌ์†Œ์Šค๋ช…}

์ธ์ฆ

์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ ํ›„ ๋ฐœ๊ธ‰๋˜๋Š” ์„ธ์…˜ ์ฟ ํ‚ค๊ฐ€ ๋ชจ๋“  ์š”์ฒญ์— ์ž๋™์œผ๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

POST /api/users/login/local
Content-Type: application/json

{
  "academyId": "my-academy",
  "userId": "admin",
  "password": "password123"
}

์‚ฌ์šฉ์ž ๊ถŒํ•œ ์ฒด๊ณ„

๊ถŒํ•œ ๋“ฑ๊ธ‰ ์„ค๋ช… ์ฃผ์š” ๊ธฐ๋Šฅ
owner ์ตœ๊ณ  ๊ด€๋ฆฌ์ž ์•„์นด๋ฐ๋ฏธ ์ƒ์„ฑ/์‚ญ์ œ, ์ „์ฒด ์‹œ์Šคํ…œ ๊ด€๋ฆฌ
admin ์•„์นด๋ฐ๋ฏธ ๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž/ํ•™๊ต ๊ด€๋ฆฌ, ๋ฐฑ์—…/๋ณต์›
manager ์šด์˜์ž ํ•™๊ธฐ/์ˆ˜์—… ๊ด€๋ฆฌ, ๊ฒŒ์‹œํŒ ๊ด€๋ฆฌ
member ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ์ˆ˜์—… ์ฐธ์—ฌ, ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ

API ๋ช…๋ช… ๊ทœ์น™

ํ”„๋ก ํŠธ์—”๋“œ useAPIv2 ํ›…์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋ช…์€ CRUD ์ ‘๋‘์‚ฌ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:

์ ‘๋‘์‚ฌ HTTP ๋ฉ”์„œ๋“œ ์˜๋ฏธ ์˜ˆ์‹œ
C POST Create (์ƒ์„ฑ) CAcademy, CUser
R GET Read (์กฐํšŒ) RAcademies, RUser
U PUT Update (์ˆ˜์ •) UActivateAcademy
D DELETE Delete (์‚ญ์ œ) DAcademy, DUser

API ๋ฌธ์„œ ์ƒ์„ฑ

๋ฐฑ์—”๋“œ ์†Œ์Šค ์ฝ”๋“œ์˜ JSDoc ์ฃผ์„์œผ๋กœ๋ถ€ํ„ฐ API ๋ฌธ์„œ๋ฅผ ์ž๋™ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

cd backend
npm run jsdoc

๊ด€๋ จ ๋ฌธ์„œ

  • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ์ƒ์„ธ ํ•„๋“œ ๋ช…์„ธ๋Š” ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • ํ”„๋ก ํŠธ์—”๋“œ์—์„œ์˜ API ํ˜ธ์ถœ ํŒจํ„ด์€ API ๊ฐœ์š”์˜ useAPIv2 ์„น์…˜์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.