@api λ°μ½λ μ΄ν°λ Model λλ Frame ν΄λμ€μ λ©μλλ₯Ό HTTP API μλν¬μΈνΈλ‘ λ
ΈμΆν©λλ€.
κΈ°λ³Έ μ¬μ©λ²
μ΅μ
httpMethod
HTTP λ©μλλ₯Ό μ§μ ν©λλ€."GET"
path
API μλν¬μΈνΈ κ²½λ‘λ₯Ό μ§μ ν©λλ€. κΈ°λ³Έκ°:/{modelName}/{methodName} (camelCase)
κ²½λ‘λ μλμΌλ‘ camelCaseλ‘ λ³νλ©λλ€.
UserModel.findById β /user/findByIdcontentType
μλ΅μ Content-Typeμ μ§μ ν©λλ€. κΈ°λ³Έκ°:"application/json"
application/octet-stream μ¬μ© μ μ£Όμμ¬ν: - λ°λμ
Buffer λλ Uint8Arrayλ₯Ό λ°νν΄μΌ
ν©λλ€ - Content-Disposition ν€λλ‘ λ€μ΄λ‘λ νμΌλͺ
μ μ§μ ν μ μμ΅λλ€ - νμΌλͺ
μ νκΈμ΄
ν¬ν¨λ κ²½μ° encodeURIComponent()λ‘ μΈμ½λ©νμΈμ - λμ©λ νμΌμ μ€νΈλ¦¬λ° λ°©μμ κ³ λ €νμΈμclients
μμ±ν ν΄λΌμ΄μΈνΈ νμ μ μ§μ ν©λλ€. κΈ°λ³Έκ°:["axios"]
guards
API μ κ·Ό κΆνμ μ§μ ν©λλ€.description
API μ€λͺ μ μΆκ°ν©λλ€. μμ±λ νμ κ³Ό λ¬Έμμ ν¬ν¨λ©λλ€.resourceName
μμ±λλ μλΉμ€ νμΌμ 리μμ€ μ΄λ¦μ μ§μ ν©λλ€.timeout
API μμ²μ νμμμμ λ°λ¦¬μ΄ λ¨μλ‘ μ§μ ν©λλ€.cacheControl
μλ΅μ Cache-Control ν€λλ₯Ό μ€μ ν©λλ€.compress
μλ΅ μμΆ μ€μ μ μ§μ ν©λλ€.μ 체 μ΅μ μμ
κ²½λ‘ μμ± κ·μΉ
Model ν΄λμ€
- ν΄λμ€ μ΄λ¦μμ βModelClassβ μ κ±°
- λλ¨Έμ§λ₯Ό camelCaseλ‘ λ³ν
/{modelName}/{methodName}νμ
Frame ν΄λμ€
- ν΄λμ€ μ΄λ¦μμ βFrameClassβ μ κ±°
- λλ¨Έμ§λ₯Ό camelCaseλ‘ λ³ν
/{frameName}/{methodName}νμ
λ€λ₯Έ λ°μ½λ μ΄ν°μ ν¨κ» μ¬μ©
@transactional
@cache
@upload
@uploadμ @api μμ΄ λ
립μ μΌλ‘ μ¬μ©ν©λλ€.
μ μ½μ¬ν
1. λ€λ₯Έ λΌμ°ν λ°μ½λ μ΄ν°(@stream, @websocket, @upload)μ μ€λ³΅ μ¬μ© λΆκ°
κ°μ λ©μλμ@api, @stream, @websocket, @upload μ€ λ μ΄μμ ν¨κ» μ¬μ©ν μ μμ΅λλ€.
2. κ°μ λ©μλμ μ¬λ¬ λ² μ¬μ© μ
μ¬λ¬ λ² μ¬μ©νλ©΄ λ§μ§λ§ κ²μ΄ μ°μ λλ©°, μΆ©λνλ μ΅μ μ΄ μμΌλ©΄ μλ¬ λ°μ:3. Model/Frame ν΄λμ€μμλ§ μ¬μ© κ°λ₯
μμ±λλ μ½λ
@api λ°μ½λ μ΄ν°λ₯Ό μ¬μ©νλ©΄ λ€μμ΄ μλ μμ±λ©λλ€:
1. API λΌμ°νΈ λ±λ‘
2. νμ μ μ μμ±
3. ν΄λΌμ΄μΈνΈ μ½λ μμ±
Axios:λ‘κΉ
@api λ°μ½λ μ΄ν°λ μλμΌλ‘ λ‘κ·Έλ₯Ό λ¨κΉλλ€:
[model:user] λλ [frame:auth] νμμ
λλ€.
μμ λͺ¨μ
- κΈ°λ³Έ CRUD
- μΊμ±
- κΆν μ μ΄
- 컀μ€ν κ²½λ‘
λ€μ λ¨κ³
@stream
SSE μ€νΈλ¦¬λ° API λ§λ€κΈ°
@transactional
λ°μ΄ν°λ² μ΄μ€ νΈλμμ
μ¬μ©νκΈ°
@upload
νμΌ μ
λ‘λ API λ§λ€κΈ°
@cache
λ©μλ κ²°κ³Ό μΊμ±νκΈ°