Skip to content

모집글(Articles) API

yanggwangseong edited this page Nov 24, 2024 · 9 revisions

Articles

Method Endpoint Description
GET /articles 모든 모각밥 모집글 리스트 조회
GET /articles/:articleId 모각밥 특정 모집글 조회
POST /articles 모각밥 특정 모집글 생성
PATCH /articles/:articleId 모각밥 특정 모집글 수정
PUT /articles/:articleId/likes 모각밥 특정 모집글 좋아요
모각밥 모집글 이미지 업로드
모각밥 모집글 삭제

[GET] 모든 모각밥 모집글 리스트 조회 (/articles)

Headers

Key Value Description
Authorization Bearer jwt-access-token JWT 인증을 위한 액세스 토큰

Request

Query Parameters:

Parameter Type Description
region string 조회할 모집글의 지역
category string 조회할 음식 카테고리 (한식, 양식 등)
limit number 페이지 크기 (기본값: 10)
after string 이전 요청의 마지막 articleId (커서 역할)

Example Request:

GET /articles?region=Seoul&category=한식&limit=10&after=12345

Response

Success (200 OK):

{
   "success": true,
   "data": {
       "list": [
           {
               "articleId": "12346",
               "title": "홍대 모각밥 모집",
               "region": "Seoul",
               "category": "한식",
               "startTime": "2024-11-20T18:00:00Z",
               "endTime": "2024-11-20T20:00:00Z",
               "likes": 5,
               "createdAt": "2024-11-19T12:00:00Z"
           },
           {
               "articleId": "12347",
               "title": "강남 모각밥 모집",
               "region": "Seoul",
               "category": "양식",
               "startTime": "2024-11-22T19:00:00Z",
               "endTime": "2024-11-22T21:00:00Z",
               "likes": 8,
               "createdAt": "2024-11-19T12:30:00Z"
           }
       ],
       "cursor": {
           "after": "12347"
       },
       "count": 2,
       "next": "/articles?region=Seoul&category=한식&limit=10&after=12347"
   }
}

Exception

  • 401 Unauthorized: 인증 토큰이 없거나 유효하지 않은 경우
{
    "success": false,
    "timestamp": "2023-02-22T06:25:08.663Z",
    "status": 401,
    "message": "인증 토큰이 없거나 유효하지 않습니다",
    "path": "/participations"
}
  • 400 Bad Request: 잘못된 쿼리 파라미터
{
    "success": false,
    "timestamp": "2023-02-22T06:25:08.663Z",
    "status": 400,
    "message": "유효하지 않은 쿼리 파라미터입니다",
    "path": "/articles"
}

[GET] 특정 모집글 조회 (/articles/:articleId)

Headers

Key Value Description
Authorization Bearer jwt-access-token JWT 인증을 위한 액세스 토큰

Request

No request body required.

Response

Success (200 OK):

{
   "success": true,
   "data": {
       "articleId": "12345",
       "title": "홍대 모각밥 모집",
       "region": "Seoul",
       "category": "한식",
       "startTime": "2024-11-20T18:00:00Z",
       "endTime": "2024-11-20T20:00:00Z",
       "content": "오늘 저녁 같이 하실 분 구합니다!",
       "likes": 5,
       "createdAt": "2024-11-19T12:00:00Z",
       "updatedAt": "2024-11-19T13:00:00Z"
   }
}

Exception

  • 401 Unauthorized: 인증 토큰이 없거나 유효하지 않은 경우
{
    "success": false,
    "timestamp": "2023-02-22T06:25:08.663Z",
    "status": 401,
    "message": "인증 토큰이 없거나 유효하지 않습니다",
    "path": "/participations"
}
  • 404 Not Found: 요청한 모집글을 찾을 수 없는 경우
{
    "success": false,
    "timestamp": "2023-02-22T06:25:08.663Z",
    "status": 404,
    "message": "모집글을 찾을 수 없습니다",
    "path": "/articles/12345"
}

[POST] 모집글 생성 (/articles)

Headers

Key Value Description
Authorization Bearer jwt-access-token JWT 인증을 위한 액세스 토큰
Content-Type application/json 요청 본문이 JSON 형식임을 지정

Request

{
   "title": "홍대 모각밥 모집",
   "region": "Seoul",
   "category": "한식",
   "content": "오늘 저녁 같이 하실 분 구합니다!",
   "startTime": "2024-11-20T18:00:00Z",
   "endTime": "2024-11-20T20:00:00Z"
}

Response

Success (201 Created):

{
   "success": true,
   "data": {
       "articleId": "12345",
       "title": "홍대 모각밥 모집",
       "region": "Seoul",
       "category": "한식",
       "startTime": "2024-11-20T18:00:00Z",
       "endTime": "2024-11-20T20:00:00Z",
       "createdAt": "2024-11-19T12:00:00Z"
   }
}

Exception

  • 401 Unauthorized: 인증 토큰이 없거나 유효하지 않은 경우
{
    "success": false,
    "timestamp": "2023-02-22T06:25:08.663Z",
    "status": 401,
    "message": "인증 토큰이 없거나 유효하지 않습니다",
    "path": "/participations"
}
  • 400 Bad Request: 필수 필드 누락
{
    "success": false,
    "timestamp": "2023-02-22T06:25:08.663Z",
    "status": 400,
    "message": "필수 필드(title, region, category, content, startTime, endTime)가 누락되었습니다",
    "path": "/articles"
}

[PATCH] 모집글 수정 (/articles/:articleId)

Headers

Key Value Description
Authorization Bearer jwt-access-token JWT 인증을 위한 액세스 토큰
Content-Type application/json 요청 본문이 JSON 형식임을 지정

Request

{
   "title": "수정된 홍대 모각밥 모집",
   "content": "시간을 조금 변경했습니다. 참여 부탁드려요!",
   "startTime": "2024-11-20T19:00:00Z"
}

Response

Success (200 OK):

{
   "success": true,
   "data": {
       "articleId": "12345",
       "title": "수정된 홍대 모각밥 모집",
       "content": "시간을 조금 변경했습니다. 참여 부탁드려요!",
       "startTime": "2024-11-20T19:00:00Z",
       "updatedAt": "2024-11-19T13:00:00Z"
   }
}

Exception

  • 401 Unauthorized: 인증 토큰이 없거나 유효하지 않은 경우
{
    "success": false,
    "timestamp": "2023-02-22T06:25:08.663Z",
    "status": 401,
    "message": "인증 토큰이 없거나 유효하지 않습니다",
    "path": "/participations"
}
  • 403 Forbidden: 수정 권한이 없는 경우
{
    "success": false,
    "timestamp": "2023-02-22T06:25:08.663Z",
    "status": 403,
    "message": "모집글을 수정할 권한이 없습니다",
    "path": "/articles/12345"
}

[PUT] 모집글 좋아요 (/articles/:articleId/likes)

Headers

Key Value Description
Authorization Bearer jwt-access-token JWT 인증을 위한 액세스 토큰

Request

No request body required.

Response

Success (200 OK):

{
   "success": true,
   "data": {
       "articleId": "12345",
       "likes": 6
   }
}

Exception

  • 401 Unauthorized: 인증 토큰이 없거나 유효하지 않은 경우
{
    "success": false,
    "timestamp": "2023-02-22T06:25:08.663Z",
    "status": 401,
    "message": "인증 토큰이 없거나 유효하지 않습니다",
    "path": "/participations"
}
  • 404 Not Found: 요청한 모집글을 찾을 수 없는 경우
{
    "success": false,
    "timestamp": "2023-02-22T06:25:08.663Z",
    "status": 404,
    "message": "모집글을 찾을 수 없습니다",
    "path": "/articles/12345/likes"
}