Skip to content
EunHyo Park edited this page Jun 11, 2025 · 8 revisions

๐Ÿ“ถ API ๋ช…์„ธ์„œ

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

๐Ÿ”น /api/oauth/login

ํ•ญ๋ชฉ ๋‚ด์šฉ
Method POST
์„ค๋ช… ์นด์นด์˜ค ๋กœ๊ทธ์ธ

์š”์ฒญ ์˜ˆ์‹œ

์นด์นด์˜ค ์ธ๊ฐ€ ์ฝ”๋“œ ์š”์ฒญ URL

Request Header

Content-Type: application/json

Request Body

{
  "code": "[์ธ๊ฐ€์ฝ”๋“œ]"
}
  • code: ์นด์นด์˜ค์—์„œ ๋ฐœ๊ธ‰ ๋ฐ›์€ ์ธ๊ฐ€์ฝ”๋“œ

Response_Success

{
  "isSuccess": true,
  "code": "COMMON200",
  "message": "์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.",
  "result": {
    "tokens": {
      "accessToken": "ACCESS_TOKEN_STRING",
      "refreshToken": "REFRESH_TOKEN_STRING"
    }
  }
}
  • isSuccess โ†’ ์„ฑ๊ณต ์—ฌ๋ถ€
  • code โ†’ ์ปค์Šคํ…€ ์ƒํƒœ ์ฝ”๋“œ
  • message โ†’ ์š”์ฒญ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€
  • result.tokens.accessToken โ†’ JWT access token
  • result.tokens.refreshToken โ†’ JWT refresh token

Respone_Error

{
  "isSuccess": false,
  "code": "KAKAO4002",
  "message": "์นด์นด์˜ค ์ธ๊ฐ€ ์ฝ”๋“œ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",
  "result": {
    "error": "invalid_grant",
    "error_description": "authorization code not found for code=...",
    "error_code": "KOE320"
  }
}
  • code โ†’ ์—๋Ÿฌ ์œ ํ˜• ์‹๋ณ„์„ ์œ„ํ•œ ์ปค์Šคํ…€ ์ฝ”๋“œ
  • error_description โ†’ ์ƒ์„ธ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€
  • error_code โ†’ ์นด์นด์˜ค ์—๋Ÿฌ ์ฝ”๋“œ

2. AI์™€ ๋Œ€ํ™”ํ•˜๊ธฐ + AI ์ผ๊ธฐ ์ƒ์„ฑ

๐Ÿ”น /api/chat/start?character=์•™๊ธ€์ด

ํ•ญ๋ชฉ ๋‚ด์šฉ
Method POST
์„ค๋ช… ๋Œ€ํ™” ์‹œ์ž‘ ๋ฒ„ํŠผ โ†’ ์—ฌ๊ธฐ๋กœ POST โ†’ ํ•ด๋‹น ๋Œ€ํ™” chatId์™€ ์บ๋ฆญํ„ฐ์˜ ์ฒซ ๋ฉ˜ํŠธ ๋ฐ˜ํ™˜

์š”์ฒญ ์˜ˆ์‹œ

Response_Success

{
    "chatId": 3,
    "role": "assistant",
    "content": "์˜ค๋Š˜ ๊ธฐ๋ถ„ ์–ด๋• ๋Š”๋ฐ! ์˜ค๋Š˜๋„ ํ™”๊ฐ€ ๋‚˜๋Š” ์ผ ์žˆ์—ˆ๋ƒ๊ณ ?!"
}
  • chatId โ†’ ํ•ด๋‹น ๋Œ€ํ™”์˜ id (์•ž์œผ๋กœ ๋Œ€ํ™”๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค)
  • role โ†’ ํ˜„์žฌ ๋งํ•˜๊ณ  ์žˆ๋Š”๊ฒŒ ๋ˆ„๊ตฌ์ธ์ง€
    • user: ์‚ฌ์šฉ์ž
    • assistant: ai ์บ๋ฆญํ„ฐ
  • content โ†’ ์ฒ˜์Œ ๋Œ€ํ™” ์‹œ์ž‘ํ•ด์„œ ๋Œ€ํ™”์ฐฝ์— ๋“ค์–ด๊ฐ”์„ ๋•Œ, ์บ๋ฆญํ„ฐ๊ฐ€ ๋งํ•˜๋Š” ๋ฉ˜ํŠธ

๐Ÿ”น /api/chat/{chatId}/reply?character=์•™๊ธ€์ด

ํ•ญ๋ชฉ ๋‚ด์šฉ
Method POST
์„ค๋ช… ์œ„์—์„œ ๋ฐ›์€ chatId๋ฅผ ๋„ฃ์–ด ์‚ฌ์šฉ์ž์˜ ์‘๋‹ต์„ ์š”์ฒญ์œผ๋กœ ๋ณด๋ƒ„

์š”์ฒญ ์˜ˆ์‹œ

Request Body

{
  "role": "user",
  "content": "๋„ˆ๋ฌด ํ™”๊ฐ€๋‚˜!!!"
}
  • role โ†’ ํ˜„์žฌ ๋งํ•˜๊ณ  ์žˆ๋Š”๊ฒŒ ๋ˆ„๊ตฌ์ธ์ง€
    • user: ์‚ฌ์šฉ์ž
    • assistant: ai ์บ๋ฆญํ„ฐ
  • content โ†’ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ

Respone_Success

{
    "role": "assistant",
    "content": "์™œ ๊ทธ๋ž˜? ๋ฌด์Šจ ์ผ์ด์•ผ? ๋‚˜ํ•œํ…Œ ํ„ธ์–ด๋†”๋ด, ๋‚ด๊ฐ€ ๊ฐ™์ด ํ™”๋‚ด์ฃผ์ง€!"
}
  • role: ํ˜„์žฌ ๋งํ•˜๊ณ  ์žˆ๋Š”๊ฒŒ ๋ˆ„๊ตฌ์ธ์ง€
    • user: ์‚ฌ์šฉ์ž
    • assistant: ai ์บ๋ฆญํ„ฐ
  • content โ†’ ai์˜ ์‘๋‹ต

๐Ÿ”น /api/diary/generate

ํ•ญ๋ชฉ ๋‚ด์šฉ
Method POST
์„ค๋ช… ๋Œ€ํ™” ๋‚ด์šฉ์„ ๋ณด๊ณ  AI๊ฐ€ ์ผ๊ธฐ๋ฅผ ์ƒ์„ฑ

์š”์ฒญ ์˜ˆ์‹œ

Request Body

{
  "chatId": 3,
  "character": "์•™๊ธ€์ด",
  "date": "2025-05-16"
}
  • chatId โ†’ ์ผ๊ธฐ๋ฅผ ์ƒ์„ฑํ•  ๋Œ€ํ™”์ฐฝ์˜ id
  • character โ†’ ๋ฌด์Šจ ์บ๋ฆญํ„ฐ์™€ ๋Œ€ํ™”ํ–ˆ๋Š”์ง€
    • ์•™๊ธ€์ด
    • ์›…์ด
    • ํ‹ฐ๋ฐ”๋…ธ
  • data โ†’ ์ผ๊ธฐ ์ž‘์„ฑ ๋‚ ์งœ

Respone_Success

{
    "diaryId": 38,
    "title": "ํŒ€ํ”Œ ๊ณ ๋ฏผ",
    "content": "์˜ค๋Š˜์€ ํŒ€ํ”Œ์—์„œ ํŒ€์›์ด ์ ๊ทน์ ์œผ๋กœ ์ฐธ์—ฌํ•˜์ง€ ์•Š์•„์„œ ์งœ์ฆ์ด ๋‚ฌ๋‹ค. ํŒ€์›๋“ค๊ณผ ์†Œํ†ตํ•˜๊ณ  ํ˜‘๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ๋А๊ผˆ๊ณ , ํŒ€์›๋“ค์„ ๋…๋ คํ•˜๊ณ  ์—ญํ• ์„ ๋ถ„๋‹ดํ•˜๋Š” ๋“ฑ์˜ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ–ˆ๋‹ค. ๋˜ํ•œ, ๋ฏธ๋ฆฌ ๊ณ„ํš์„ ์„ธ์šฐ๊ณ  ๋ชฉํ‘œ๋ฅผ ๋ถ„๋ช…ํžˆ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค.",
    "hashtag": "ํŒ€ํ”Œ๊ณ ๋ฏผ #ํ˜‘๋ ฅ #๊ณ„ํš",
    "character": "ํ‹ฐ๋ฐ”๋…ธ"
}
  • diaryId โ†’ ์ผ๊ธฐ์˜ ๊ณ ์œ  ID
  • title โ†’ ์ผ๊ธฐ ์ œ๋ชฉ
  • content โ†’ ์ผ๊ธฐ ๋‚ด์šฉ
  • hashtag โ†’ ํ•ด์‹œํƒœ๊ทธ
  • character โ†’ ์บ๋ฆญํ„ฐ

3. ์ผ๊ธฐ ์ง์ ‘ ์ž‘์„ฑํ•˜๊ธฐ + AI ์บ๋ฆญํ„ฐ ์ฝ”๋ฉ˜ํŠธ

๐Ÿ”น /api/diary/create

ํ•ญ๋ชฉ ๋‚ด์šฉ
Method POST
์„ค๋ช… ์‚ฌ์šฉ์ž๊ฐ€ ์ผ๊ธฐ ์ง์ ‘ ์ž‘์„ฑ

์š”์ฒญ ์˜ˆ์‹œ

Request Body

{
    "date": "2025-06-09",
    "title": "ใ…ใ„ดใ…‡ใ„น",
    "content": "ใ…ใ„ดใ…‡ใ„ปใ„ดใ…‡ใ„น",
    "hashtag": "ใ…ใ„ดใ…‡ใ„น",
    "character": "ํ‹ฐ๋ฐ”๋…ธ"
}
  • character: ์•™๊ธ€์ด, ์›…์ด, ํ‹ฐ๋ฐ”๋…ธ ์ค‘ ํ•˜๋‚˜

Respone_Success

{
    "id": 122,
    "date": "2025-06-09",
    "title": "ใ…ใ„ดใ…‡ใ„น",
    "content": "ใ…ใ„ดใ…‡ใ„ปใ„ดใ…‡ใ„น",
    "hashtag": "ใ…ใ„ดใ…‡ใ„น",
    "character": "ํ‹ฐ๋ฐ”๋…ธ"
}
  • id โ†’ diary id

Response_Error

{
    "isSuccess": false,
    "code": "COMMON500",
    "message": "์„œ๋ฒ„ ์—๋Ÿฌ, ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ฌธ์˜ ๋ฐ”๋ž๋‹ˆ๋‹ค.",
    "result": "์กด์žฌํ•˜์ง€ ์•Š๋Š” ์บ๋ฆญํ„ฐ์ž…๋‹ˆ๋‹ค: ํ‹ฐ๋ฐ”"
}
  • ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์บ๋ฆญํ„ฐ ์ž…๋ ฅ ์‹œ

๐Ÿ”น /api/comment/diary?diaryId={diaryId}

ํ•ญ๋ชฉ ๋‚ด์šฉ
Method POST
์„ค๋ช… ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์บ๋ฆญํ„ฐ๊ฐ€ ๋‹ค์ด์–ด๋ฆฌ์— ์ฝ”๋ฉ˜ํŠธ ์ž‘์„ฑ

์š”์ฒญ ์˜ˆ์‹œ

Request Header

Content-Type : application/json Authorization : Bearer [์นด์นด์˜ค ์ธ๊ฐ€์ฝ”๋“œ๋ฅผ ๋ฐฑ์—๊ฒŒ ์ค€ ๋’ค ๋ฐ›์€ ์•ก์„ธ์Šค ํ† ํฐ]

Request Body

{
	"context": "์™€๋ž„๋ผ",
	"characterId": 1
}

Respone_Success

{
    "isSuccess": true,
    "code": "COMMON200",
    "message": "์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.",
    "result": {
        "commentId": 3,
        "createdAt": "2025-06-02T15:48:15.4534789"
    }
}
  • id โ†’ diary id

4. ์‚ฌ์šฉ์ž์˜ ์ผ๊ธฐ ์ „์ฒด ์กฐํšŒ + ๊ฐœ๋ณ„ ์กฐํšŒ

๐Ÿ”น /api/diary/get

ํ•ญ๋ชฉ ๋‚ด์šฉ
Method GET
์„ค๋ช… ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ „์ฒด ์ผ๊ธฐ ๋ชฉ๋ก ์กฐํšŒ

Response_Success

[
    {
        "id": 122,
        "date": "2025-06-09",
        "title": "ใ…ใ„ดใ…‡ใ„น",
        "content": "ใ…ใ„ดใ…‡ใ„ปใ„ดใ…‡ใ„น",
        "hashTags": [
            "ใ…ใ„ดใ…‡ใ„น"
        ]
    },
    {
        "id": 117,
        "date": "2025-06-06",
        "title": "์—ฌํ–‰ ๊ณ„ํš ์งœ๊ธฐ์˜ ์–ด๋ ค์›€",
        "content": "์˜ค๋Š˜์€ ์—ฌํ–‰ ๊ณ„ํš์„ ์งœ๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ ์–ด๋ ค์›€์— ๋ถ€๋”ชํ˜”๋‹ค. ์–ด๋””๋กœ ๊ฐ€์•ผ ํ• ์ง€, ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ๊ฐ€ ๋ฒ…์ฐผ๋‹ค. ์—ฌ๋Ÿฌ ์—ฌํ–‰์ง€๋ฅผ ๊ณ ๋ คํ•˜๋‹ค ๋ณด๋‹ˆ ์„ ํƒ์˜ ํญ์ด ๋„“์–ด์ ธ ์˜คํžˆ๋ ค ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ธฐ๊ฐ€ ํž˜๋“ค์—ˆ๋‹ค. ๋˜ํ•œ, ์˜ˆ์‚ฐ ๊ณ„ํš๊ณผ ์ผ์ • ์กฐ์œจ๋„ ์‰ฝ์ง€ ์•Š์•˜๋‹ค. ์ด ๋ชจ๋“  ๊ณผ์ •์—์„œ ๋А๋‚€ ์ ์€ ์ฒด๊ณ„์ ์ธ ๊ณ„ํš์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋‚ด์ผ์€ ์ข€ ๋” ๊ตฌ์ฒด์ ์ธ ๊ณ„ํš์„ ์„ธ์›Œ์„œ ์—ฌํ–‰ ์ค€๋น„๋ฅผ ์ฐจ๊ทผ์ฐจ๊ทผ ์ง„ํ–‰ํ•ด์•ผ๊ฒ ๋‹ค.",
        "hashTags": [
            "์—ฌํ–‰๊ณ„ํš",
            "๊ฒฐ์ •์žฅ์• ",
            "์ฒด๊ณ„์ ์ค€๋น„"
        ]
    },
    {
        "id": 110,
        "date": "2025-06-05",
        "title": "์˜ค๋Š˜์˜ ๋ฐœํ‘œ ์ค€๋น„",
        "content": "์˜ค๋Š˜์€ ์ค‘์š”ํ•œ ๋ฐœํ‘œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์•„์นจ๋ถ€ํ„ฐ ๊ธด์žฅ์ด ๋˜์–ด ์žˆ์—ˆ์ง€๋งŒ, ๋Œ€ํ™”๋ฅผ ํ†ตํ•ด ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ํŒ์„ ์–ป์—ˆ๋‹ค. ๊นŠ๊ฒŒ ์ˆจ์„ ์‰ฌ๊ณ , ๋ฐœํ‘œ ๋‚ด์šฉ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์—ฐ์Šตํ•˜๋ฉฐ, ์ฒญ์ค‘์˜ ๋จธ๋ฆฌ ์œ„๋ฅผ ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์„ ๋ฐฐ์› ๋‹ค. ์ด๋Ÿฌํ•œ ์กฐ์–ธ๋“ค ๋•๋ถ„์— ๋ฐœํ‘œ ์ค€๋น„๋ฅผ ์ข€ ๋” ์ž์‹  ์žˆ๊ฒŒ ๋งˆ์น  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋ฐœํ‘œ๊ฐ€ ์ž˜ ์ง„ํ–‰๋˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉฐ, ์ด ๊ฒฝํ—˜์„ ํ†ตํ•ด ์•ž์œผ๋กœ์˜ ๋ฐœํ‘œ์—๋„ ์ž์‹ ๊ฐ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ํฌ๋งํ•œ๋‹ค.",
        "hashTags": [
            "๋ฐœํ‘œ์ค€๋น„",
            "๊ธด์žฅ์™„ํ™”",
            "์ž์‹ ๊ฐ"
        ]
    },
...
    {
        "id": 56,
        "date": "2025-05-16",
        "title": "test",
        "content": "test",
        "hashTags": [
            "testsetst"
        ]
    }
]

๐Ÿ”น /api/diary/get/{diaryId}

ํ•ญ๋ชฉ ๋‚ด์šฉ
Method GET
์„ค๋ช… ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ผ๊ธฐ ๊ฐœ๋ณ„ ์กฐํšŒ

์š”์ฒญ ์˜ˆ์‹œ

Response_Success

{
    "id": 105,
    "date": "2025-06-05",
    "title": "dddd",
    "content": "dddd",
    "commentId": 254,
    "comment": "๋„ค, ์‚ฌ์šฉ์ž๊ฐ€ ์†์ƒํ•œ ๋งˆ์Œ์„ ์ดํ•ดํ•ด. ํ•จ๊ป˜ ํ™”๋ฅผ ๋‚ด๋ฉฐ ๊ทธ ๋งˆ์Œ์„ ํ„ฐ๋œจ๋ ค๋ณด์ž. ์šฐ๋ฆฌ๋Š” ํ•จ๊ป˜ ๊ฐ•ํ•ด์งˆ ์ˆ˜ ์žˆ์–ด. #ํ™”๋ฅผํ„ฐ๋œจ๋ฆฌ์ž #๊ฐ•ํ•ด์ง€์ž #์‹ธ์šฐ์ž",
    "character": "์•™๊ธ€์ด",
    "hashTags": [
        "dddd"
    ]
}

Response_Error

{
    "isSuccess": false,
    "code": "COMMON500",
    "message": "์„œ๋ฒ„ ์—๋Ÿฌ, ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ฌธ์˜ ๋ฐ”๋ž๋‹ˆ๋‹ค.",
    "result": "ํ•ด๋‹น ๋ฉค๋ฒ„์˜ ์ผ๊ธฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค."
}
  • ์ž์‹ ์˜ ์ผ๊ธฐ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ

5. ์ผ๊ธฐ ์ˆ˜์ • ๋ฐ ์‚ญ์ œ

๐Ÿ”น /api/diary/update/{diaryId}

ํ•ญ๋ชฉ ๋‚ด์šฉ
Method PUT
์„ค๋ช… ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ผ๊ธฐ ์ˆ˜์ •

์š”์ฒญ ์˜ˆ์‹œ

Request Body

{
  "date": "2025-06-01",
  "title": "์˜ค๋Š˜์˜ ์ผ๊ธฐ ์ˆ˜์ •๋ณธ!!!!!!",
  "content": "์˜ค๋Š˜ ํ•˜๋ฃจ๋Š” ์ •๋ง ํŠน๋ณ„ํ–ˆ์–ด์š”. ์ˆ˜์ •๋œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.",
  "hashtag": "#ํ–‰๋ณต #์ผ์ƒ #์ˆ˜์ •๋จ"
}

Response_Success

{
    "id": 1,
    "date": "2025-06-01",
    "title": "์˜ค๋Š˜์˜ ์ผ๊ธฐ ์ˆ˜์ •๋ณธ!!!!!!",
    "content": "์˜ค๋Š˜ ํ•˜๋ฃจ๋Š” ์ •๋ง ํŠน๋ณ„ํ–ˆ์–ด์š”. ์ˆ˜์ •๋œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.",
    "hashtag": "#ํ–‰๋ณต #์ผ์ƒ #์ˆ˜์ •๋จ",
    "character": "์›…์ด"
}

๐Ÿ”น /api/diary/delete/{diaryId}

ํ•ญ๋ชฉ ๋‚ด์šฉ
Method DELETE
์„ค๋ช… ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ผ๊ธฐ ์‚ญ์ œ

์š”์ฒญ ์˜ˆ์‹œ

Response

{
    "isSuccess": true,
    "code": "COMMON200",
    "message": "์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.",
    "result": "์ผ๊ธฐ ์‚ญ์ œ ์„ฑ๊ณต"
}

6. ํ•ด์‹œํƒœ๊ทธ ์กฐํšŒ

๐Ÿ”น /api/hashtag/names

ํ•ญ๋ชฉ ๋‚ด์šฉ
Method GET
์„ค๋ช… ์‚ฌ์šฉ์ž๊ฐ€ ์ƒ์„ฑํ•œ ํ•ด์‹œํƒœ๊ทธ ์กฐํšŒ

์š”์ฒญ ์˜ˆ์‹œ

Response_Success

[
    {
        "HashTagId": 34,
        "HashTagName": "์‹คํŒจ๋Š”์„ฑ๊ณต์˜๊ธธ"
    },
    {
        "HashTagId": 35,
        "HashTagName": "๋ฐฐ์›€"
    },
    {
        "HashTagId": 36,
        "HashTagName": "์—ด์ •"
    },
    {
        "HashTagId": 37,
        "HashTagName": "๊ณ„ํš"
    },
    {
        "HashTagId": 86,
        "HashTagName": "์ŠคํŠธ๋ ˆ์Šคํ•ด์†Œ"
    },
    {
        "HashTagId": 87,
        "HashTagName": "์ฐจ๋ถ„ํ•œ๋Œ€ํ™”"
    },
    {
        "HashTagId": 88,
        "HashTagName": "๊ธฐ๋ถ„์ข‹์€ํ•˜๋ฃจ"
    },
    {
        "HashTagId": 89,
        "HashTagName": "์นœ๊ตฌ์™€ํ•จ๊ป˜"
    },
    {
        "HashTagId": 90,
        "HashTagName": "๊ฑฑ์ •์€๋‚ด์ผ๋กœ"
    },
    {
        "HashTagId": 91,
        "HashTagName": "์šฐ์šธ"
    },
    {
        "HashTagId": 92,
        "HashTagName": "๋‹ต๋‹ต"
    },
    {
        "HashTagId": 93,
        "HashTagName": "์“ธ์“ธ"
    },
    {
        "HashTagId": 146,
        "HashTagName": "๊ฑ์•„์•„์•„์•„ใ…ใ„ฑ"
    }
]

๐Ÿ”น /api/hashtag/name/{hashtagName}

ํ•ญ๋ชฉ ๋‚ด์šฉ
Method GET
์„ค๋ช… ํ•ด๋‹น ํ•ด์‹œํƒœ๊ทธ๊ฐ€ ๋‹ฌ๋ฆฐ ์ž์‹ ์˜ ์ผ๊ธฐ ๋ชฉ๋ก ์กฐํšŒ

์š”์ฒญ ์˜ˆ์‹œ

Response_Success

[
    {
        "id": 30,
        "date": "2025-05-23",
        "title": "์ž‘์€ ์‰ผํ‘œ ๊ฐ™์€ ํ•˜๋ฃจ",
        "content": "๋ฐ”์˜๊ฒŒ ํ˜๋Ÿฌ๊ฐ€๋˜ ์ผ์ƒ ์†, ์ž ์‹œ ๋ฉˆ์ถฐ ์˜ํ™” ํ•œ ํŽธ์„ ๋ดค๋‹ค. ๊ทน์žฅ ์•ˆ ์–ด๋‘์šด ๊ณต๊ฐ„ ์†์—์„œ ๋น›๋‚˜๋Š” ์Šคํฌ๋ฆฐ์„ ๋ฐ”๋ผ๋ณด๋ฉฐ ๋งˆ์Œ๋„ ํ•จ๊ป˜ ๋ง‘์•„์ง€๋Š” ๋А๋‚Œ. ์˜ํ™”๋Š” ์ƒ๊ฐ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ข‹์•˜๊ณ , ๊ฐ์ •์ด ๋ชฝ๊ธ€๋ชฝ๊ธ€ ํ”ผ์–ด์˜ฌ๋ž๋‹ค. ์นœ๊ตฌ์™€ ๋‚˜๋ˆˆ ๋Œ€ํ™”, ์›ƒ์Œ, ๊ทธ๋ฆฌ๊ณ  ํŒ์ฝ˜ ๋ƒ„์ƒˆ๊นŒ์ง€โ€ฆ ๋ชจ๋“  ๊ฒŒ ์˜ค๋žœ๋งŒ์— ๋А๊ปด๋ณด๋Š” ๋”ฐ๋œปํ•œ ์ˆœ๊ฐ„๋“ค์ด์—ˆ๋‹ค.",
        "hashTags": [
            "์ทจ๋ฏธ",
            "ํž๋ง"
        ]
    },
    {
        "id": 29,
        "date": "2025-05-23",
        "title": "์ž‘์€ ์‰ผํ‘œ ๊ฐ™์€ ํ•˜๋ฃจ",
        "content": "๋ฐ”์˜๊ฒŒ ํ˜๋Ÿฌ๊ฐ€๋˜ ์ผ์ƒ ์†, ์ž ์‹œ ๋ฉˆ์ถฐ ์˜ํ™” ํ•œ ํŽธ์„ ๋ดค๋‹ค. ๊ทน์žฅ ์•ˆ ์–ด๋‘์šด ๊ณต๊ฐ„ ์†์—์„œ ๋น›๋‚˜๋Š” ์Šคํฌ๋ฆฐ์„ ๋ฐ”๋ผ๋ณด๋ฉฐ ๋งˆ์Œ๋„ ํ•จ๊ป˜ ๋ง‘์•„์ง€๋Š” ๋А๋‚Œ. ์˜ํ™”๋Š” ์ƒ๊ฐ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ข‹์•˜๊ณ , ๊ฐ์ •์ด ๋ชฝ๊ธ€๋ชฝ๊ธ€ ํ”ผ์–ด์˜ฌ๋ž๋‹ค. ์นœ๊ตฌ์™€ ๋‚˜๋ˆˆ ๋Œ€ํ™”, ์›ƒ์Œ, ๊ทธ๋ฆฌ๊ณ  ํŒ์ฝ˜ ๋ƒ„์ƒˆ๊นŒ์ง€โ€ฆ ๋ชจ๋“  ๊ฒŒ ์˜ค๋žœ๋งŒ์— ๋А๊ปด๋ณด๋Š” ๋”ฐ๋œปํ•œ ์ˆœ๊ฐ„๋“ค์ด์—ˆ๋‹ค.",
        "hashTags": [
            "์ทจ๋ฏธ",
            "ํž๋ง"
        ]
    },
    {
        "id": 28,
        "date": "2025-05-23",
        "title": "์ž‘์€ ์‰ผํ‘œ ๊ฐ™์€ ํ•˜๋ฃจ",
        "content": "๋ฐ”์˜๊ฒŒ ํ˜๋Ÿฌ๊ฐ€๋˜ ์ผ์ƒ ์†, ์ž ์‹œ ๋ฉˆ์ถฐ ์˜ํ™” ํ•œ ํŽธ์„ ๋ดค๋‹ค. ๊ทน์žฅ ์•ˆ ์–ด๋‘์šด ๊ณต๊ฐ„ ์†์—์„œ ๋น›๋‚˜๋Š” ์Šคํฌ๋ฆฐ์„ ๋ฐ”๋ผ๋ณด๋ฉฐ ๋งˆ์Œ๋„ ํ•จ๊ป˜ ๋ง‘์•„์ง€๋Š” ๋А๋‚Œ. ์˜ํ™”๋Š” ์ƒ๊ฐ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ข‹์•˜๊ณ , ๊ฐ์ •์ด ๋ชฝ๊ธ€๋ชฝ๊ธ€ ํ”ผ์–ด์˜ฌ๋ž๋‹ค. ์นœ๊ตฌ์™€ ๋‚˜๋ˆˆ ๋Œ€ํ™”, ์›ƒ์Œ, ๊ทธ๋ฆฌ๊ณ  ํŒ์ฝ˜ ๋ƒ„์ƒˆ๊นŒ์ง€โ€ฆ ๋ชจ๋“  ๊ฒŒ ์˜ค๋žœ๋งŒ์— ๋А๊ปด๋ณด๋Š” ๋”ฐ๋œปํ•œ ์ˆœ๊ฐ„๋“ค์ด์—ˆ๋‹ค.",
        "hashTags": [
            "์ทจ๋ฏธ",
            "ํž๋ง"
        ]
    },
    {
        "id": 27,
        "date": "2025-05-23",
        "title": "์ž‘์€ ์‰ผํ‘œ ๊ฐ™์€ ํ•˜๋ฃจ",
        "content": "๋ฐ”์˜๊ฒŒ ํ˜๋Ÿฌ๊ฐ€๋˜ ์ผ์ƒ ์†, ์ž ์‹œ ๋ฉˆ์ถฐ ์˜ํ™” ํ•œ ํŽธ์„ ๋ดค๋‹ค. ๊ทน์žฅ ์•ˆ ์–ด๋‘์šด ๊ณต๊ฐ„ ์†์—์„œ ๋น›๋‚˜๋Š” ์Šคํฌ๋ฆฐ์„ ๋ฐ”๋ผ๋ณด๋ฉฐ ๋งˆ์Œ๋„ ํ•จ๊ป˜ ๋ง‘์•„์ง€๋Š” ๋А๋‚Œ. ์˜ํ™”๋Š” ์ƒ๊ฐ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ข‹์•˜๊ณ , ๊ฐ์ •์ด ๋ชฝ๊ธ€๋ชฝ๊ธ€ ํ”ผ์–ด์˜ฌ๋ž๋‹ค. ์นœ๊ตฌ์™€ ๋‚˜๋ˆˆ ๋Œ€ํ™”, ์›ƒ์Œ, ๊ทธ๋ฆฌ๊ณ  ํŒ์ฝ˜ ๋ƒ„์ƒˆ๊นŒ์ง€โ€ฆ ๋ชจ๋“  ๊ฒŒ ์˜ค๋žœ๋งŒ์— ๋А๊ปด๋ณด๋Š” ๋”ฐ๋œปํ•œ ์ˆœ๊ฐ„๋“ค์ด์—ˆ๋‹ค.",
        "hashTags": [
            "์ทจ๋ฏธ",
            "ํž๋ง"
        ]
    },
    {
        "id": 26,
        "date": "2025-05-23",
        "title": "์ž‘์€ ์‰ผํ‘œ ๊ฐ™์€ ํ•˜๋ฃจ",
        "content": "๋ฐ”์˜๊ฒŒ ํ˜๋Ÿฌ๊ฐ€๋˜ ์ผ์ƒ ์†, ์ž ์‹œ ๋ฉˆ์ถฐ ์˜ํ™” ํ•œ ํŽธ์„ ๋ดค๋‹ค. ๊ทน์žฅ ์•ˆ ์–ด๋‘์šด ๊ณต๊ฐ„ ์†์—์„œ ๋น›๋‚˜๋Š” ์Šคํฌ๋ฆฐ์„ ๋ฐ”๋ผ๋ณด๋ฉฐ ๋งˆ์Œ๋„ ํ•จ๊ป˜ ๋ง‘์•„์ง€๋Š” ๋А๋‚Œ. ์˜ํ™”๋Š” ์ƒ๊ฐ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ข‹์•˜๊ณ , ๊ฐ์ •์ด ๋ชฝ๊ธ€๋ชฝ๊ธ€ ํ”ผ์–ด์˜ฌ๋ž๋‹ค. ์นœ๊ตฌ์™€ ๋‚˜๋ˆˆ ๋Œ€ํ™”, ์›ƒ์Œ, ๊ทธ๋ฆฌ๊ณ  ํŒ์ฝ˜ ๋ƒ„์ƒˆ๊นŒ์ง€โ€ฆ ๋ชจ๋“  ๊ฒŒ ์˜ค๋žœ๋งŒ์— ๋А๊ปด๋ณด๋Š” ๋”ฐ๋œปํ•œ ์ˆœ๊ฐ„๋“ค์ด์—ˆ๋‹ค.",
        "hashTags": [
            "์ทจ๋ฏธ",
            "ํž๋ง"
        ]
    },
    {
        "id": 25,
        "date": "2025-05-23",
        "title": "์ž‘์€ ์‰ผํ‘œ ๊ฐ™์€ ํ•˜๋ฃจ",
        "content": "๋ฐ”์˜๊ฒŒ ํ˜๋Ÿฌ๊ฐ€๋˜ ์ผ์ƒ ์†, ์ž ์‹œ ๋ฉˆ์ถฐ ์˜ํ™” ํ•œ ํŽธ์„ ๋ดค๋‹ค. ๊ทน์žฅ ์•ˆ ์–ด๋‘์šด ๊ณต๊ฐ„ ์†์—์„œ ๋น›๋‚˜๋Š” ์Šคํฌ๋ฆฐ์„ ๋ฐ”๋ผ๋ณด๋ฉฐ ๋งˆ์Œ๋„ ํ•จ๊ป˜ ๋ง‘์•„์ง€๋Š” ๋А๋‚Œ. ์˜ํ™”๋Š” ์ƒ๊ฐ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ข‹์•˜๊ณ , ๊ฐ์ •์ด ๋ชฝ๊ธ€๋ชฝ๊ธ€ ํ”ผ์–ด์˜ฌ๋ž๋‹ค. ์นœ๊ตฌ์™€ ๋‚˜๋ˆˆ ๋Œ€ํ™”, ์›ƒ์Œ, ๊ทธ๋ฆฌ๊ณ  ํŒ์ฝ˜ ๋ƒ„์ƒˆ๊นŒ์ง€โ€ฆ ๋ชจ๋“  ๊ฒŒ ์˜ค๋žœ๋งŒ์— ๋А๊ปด๋ณด๋Š” ๋”ฐ๋œปํ•œ ์ˆœ๊ฐ„๋“ค์ด์—ˆ๋‹ค.",
        "hashTags": [
            "์ทจ๋ฏธ",
            "ํž๋ง"
        ]
    }
]

Response_Error

{
    "isSuccess": false,
    "code": "COMMON500",
    "message": "์„œ๋ฒ„ ์—๋Ÿฌ, ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ฌธ์˜ ๋ฐ”๋ž๋‹ˆ๋‹ค.",
    "result": "์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ•ด์‹œํƒœ๊ทธ์ž…๋‹ˆ๋‹ค.์œผ์•…"
}
  • ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ•ด์‹œํƒœ๊ทธ ์ž…๋ ฅ ์‹œ

7. ์ฝ”๋ฉ˜ํŠธ ์ฆ๊ฒจ์ฐพ๊ธฐ

๐Ÿ”น /api/comment/bookmark?commentId={commentId}

ํ•ญ๋ชฉ ๋‚ด์šฉ
Method POST
์„ค๋ช… ์ฝ”๋ฉ˜ํŠธ ์ฆ๊ฒจ์ฐพ๊ธฐ ๋˜๋Š” ์ฆ๊ฒจ์ฐพ๊ธฐ ์ทจ์†Œ

์š”์ฒญ ์˜ˆ์‹œ

Response_Success

{
    "isSuccess": true,
    "code": "COMMON200",
    "message": "์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.",
    "result": {
        "id": 102,
        "context": "์œผ์•…",
        "isStored": 1,
        "character": "์•™๊ธ€์ด"
    }
}
  • ์ฆ๊ฒจ์ฐพ๊ธฐ ๋˜์ง€ ์•Š์€ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ฆ๊ฒจ์ฐพ๊ธฐํ•œ ๊ฒฝ์šฐ
{
    "isSuccess": true,
    "code": "COMMON200",
    "message": "์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.",
    "result": {
        "id": 102,
        "context": "์œผ์•…",
        "isStored": 0,
        "character": "์•™๊ธ€์ด"
    }
}

Response_Error

{
    "isSuccess": false,
    "code": "COMMON500",
    "message": "์„œ๋ฒ„ ์—๋Ÿฌ, ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ฌธ์˜ ๋ฐ”๋ž๋‹ˆ๋‹ค.",
    "result": "์ฝ”๋ฉ˜ํŠธ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 104"
}
  • ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ฝ”๋ฉ˜ํŠธ์ธ ๊ฒฝ์šฐ
{
    "isSuccess": false,
    "code": "COMMON500",
    "message": "์„œ๋ฒ„ ์—๋Ÿฌ, ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ฌธ์˜ ๋ฐ”๋ž๋‹ˆ๋‹ค.",
    "result": "์‚ฌ์šฉ์ž์˜ ์ผ๊ธฐ์— ๋‹ฌ๋ฆฐ ์ฝ”๋ฉ˜ํŠธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. 5"
}
  • ์ž์‹ ์˜ ์ผ๊ธฐ์— ๋‹ฌ๋ฆฐ ์ฝ”๋ฉ˜ํŠธ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ

๐Ÿ”น /api/hashtag/bookmark/get?character={characterId}

ํ•ญ๋ชฉ ๋‚ด์šฉ
Method GET
์„ค๋ช… ์บ๋ฆญํ„ฐ ๋ณ„ ์ž์‹ ์ด ์ฆ๊ฒจ์ฐพ๊ธฐ ํ•œ ์ฝ”๋ฉ˜ํŠธ ๋ชฉ๋ก ์กฐํšŒ

์š”์ฒญ ์˜ˆ์‹œ

Response_Success

{
    "isSuccess": true,
    "code": "COMMON200",
    "message": "์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.",
    "result": [
        {
            "id": 102,
            "context": "์œผ์•…",
            "isStored": 1,
            "character": "์•™๊ธ€์ด",
            "date": "2025-06-03"
        }
    ]
}

Response_Error

{
    "isSuccess": false,
    "code": "CHARACTER4001",
    "message": "ํ•ด๋‹น ID์˜ ์บ๋ฆญํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค."
}
  • ์กด์žฌํ•˜์ง€ ์•Š๋Š” character id๋ฅผ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ

Clone this wiki locally