-
Notifications
You must be signed in to change notification settings - Fork 0
모집글(Articles) API
yanggwangseong edited this page Nov 24, 2024
·
9 revisions
Method | Endpoint | Description |
---|---|---|
GET | /articles | 모든 모각밥 모집글 리스트 조회 |
GET | /articles/:articleId | 모각밥 특정 모집글 조회 |
POST | /articles | 모각밥 특정 모집글 생성 |
PATCH | /articles/:articleId | 모각밥 특정 모집글 수정 |
PUT | /articles/:articleId/likes | 모각밥 특정 모집글 좋아요 |
모각밥 모집글 이미지 업로드 | ||
모각밥 모집글 삭제 |
Key | Value | Description |
---|---|---|
Authorization | Bearer jwt-access-token | JWT 인증을 위한 액세스 토큰 |
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
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"
}
Key | Value | Description |
---|---|---|
Authorization | Bearer jwt-access-token | JWT 인증을 위한 액세스 토큰 |
No request body required.
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"
}
Key | Value | Description |
---|---|---|
Authorization | Bearer jwt-access-token | JWT 인증을 위한 액세스 토큰 |
Content-Type | application/json | 요청 본문이 JSON 형식임을 지정 |
{
"title": "홍대 모각밥 모집",
"region": "Seoul",
"category": "한식",
"content": "오늘 저녁 같이 하실 분 구합니다!",
"startTime": "2024-11-20T18:00:00Z",
"endTime": "2024-11-20T20:00:00Z"
}
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"
}
Key | Value | Description |
---|---|---|
Authorization | Bearer jwt-access-token | JWT 인증을 위한 액세스 토큰 |
Content-Type | application/json | 요청 본문이 JSON 형식임을 지정 |
{
"title": "수정된 홍대 모각밥 모집",
"content": "시간을 조금 변경했습니다. 참여 부탁드려요!",
"startTime": "2024-11-20T19:00:00Z"
}
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"
}
Key | Value | Description |
---|---|---|
Authorization | Bearer jwt-access-token | JWT 인증을 위한 액세스 토큰 |
No request body required.
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"
}
아래는 프로젝트 데이터베이스 설계 ERD입니다: