- 개요
- Skils
- Installation
- Running Tests
- API Reference
- 프로젝트 진행 및 이슈 관리
- ERD
- 구현과정(설계 및 의도)
- TIL 및 회고
- Authors
소셜 미디어 Feed 여기 다 MOA! 본 서비스는 유저 계정의 해시태그(”#dani”) 를 기반으로 인스타그램
, 스레드
, 페이스북
, 트위터
등 복수의 SNS에 게시된 게시물 중 유저의 해시태그가 포함된 게시물들을 하나의 서비스에서 확인할 수 있는 통합 Feed 어플리케이션 입니다.
언어 및 프레임워크:
데이터베이스 및 테스트:
배포 :
ETC:
Install MOA project with gradle
./gradlew bootjar
./gradlew bootrun
To run tests, run the following command
./gradlew test
회원가입 - click
GET /users/sign-up
Content-Type: application/json
{
"username":"test1234",
"email":"[email protected]",
"password":"1q2w3e4r!",
"hashtag":"test"
}
HTTP/1.1 201
Content-Type: application/json
{
"id": 1,
"username": "test1234",
"email": "[email protected]",
"hashtag": "test"
}
로그인 - click
GET /users/sign-in
Content-Type: application/json
{
"username": "tester1234",
"password": "1q2w3e4r!",
}
HTTP/1.1 200
Content-Type: application/json
{
"accessToken": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0MTIzNCIsImV4cCI6MTY5ODc3MjE5OSwiaWF0IjoxNjk4Njg1Nzk5LCJlbWFpbCI6Inlvb2ppbmxlZS5kZXZAZ21haWwuY29tIiwidXNlcklkIjoxLCJhdXRoIjoiUk9MRV9NRU1CRVIifQ.EFjPkcgIjepNwh0qel9H9ZQMbcJ2dZ-fBl9sRuUG5tU"
}
유저 회원가입 승인 - click
GET /users/{id}/approval
Path | Type | Description |
---|---|---|
id |
Long |
Required. User's ID |
HTTP/1.1 204
Content-Type: application/json
게시물 불러오기 - click
GET /posts
Parameter | Type | Description |
---|---|---|
hashtag |
String |
|
page |
int |
|
page_count |
int |
|
createdAt |
String |
|
desc |
String |
HTTP/1.1 200
Content-Type: application/json
{
"content": [
{
"id": 1,
"contentId": "fb1",
"type": "FACEBOOK",
"title": "페북 피드_1",
"content": "good #dev #java",
"viewCount": 2,
"likeCount": 0,
"shareCount": 3,
"createdAt": "2023-10-31T02:00:30.682465",
"updatedAt": "2023-10-31T02:00:30.682465"
},
//...
],
"pageable": {
"pageNumber": 0,
"pageSize": 5,
"sort": {
"empty": false,
"sorted": true,
"unsorted": false
},
"offset": 0,
"unpaged": false,
"paged": true
},
"last": false,
"totalElements": 20,
"totalPages": 4,
"size": 5,
"number": 0,
"sort": {
"empty": false,
"sorted": true,
"unsorted": false
},
"first": true,
"numberOfElements": 5,
"empty": false
}
게시물 상세 - click
GET /posts/{postId}
Path | Type | Description |
---|---|---|
id |
Long |
Required. User's ID |
HTTP/1.1 200
Content-Type: application/json
{
"id": 0,
"contentId": "string",
"type": "FACEBOOK",
"title": "string",
"content": "string",
"viewCount": 0,
"likeCount": 0,
"shareCount": 0,
"createdAt": "2023-11-02T03:02:34.687Z",
"updatedAt": "2023-11-02T03:02:34.687Z"
}
게시물 좋아요 - click
GET /posts/{postId}/likes
Path | Type | Description |
---|---|---|
id |
Long |
Required. User's ID |
HTTP/1.1 200
Content-Type: application/json
게시물 공유 - click
GET /posts/{postId}/shares
Path | Type | Description |
---|---|---|
id |
Long |
Required. User's ID |
HTTP/1.1 200
Content-Type: application/json
Hot Hashtag 찾기 - click
GET /hashtags/hot
HTTP/1.1 200
Content-Type: application/json
{
"hashtagName": "#test",
"count": 15
}
통계 - click
GET /statistics
Parameter | Type | Description |
---|---|---|
hashtag |
String |
|
type |
String |
Required.date , hour |
start |
date |
2023-10-01 과 같이 데이트 형식이며 조회 기준 시작일을 의미합니다. |
end |
date |
2023-10-25 과 같이 데이트 형식이며 조회 기준 시작일을 의미합니다. |
value |
String |
count, view_count, like_count, share_count |
HTTP/1.1 200
Content-Type: application/json
{
"time": "#test",
"count": 15
}
- 유저는 ID(
#HashtagId
)를 가지고 있고 자신의 ID와 연관된 SNS 게시글을 조회할 수 있습니다- 게시글과 해시태그는
N:M
의 관계를 가지고 있습니다.
JWT 유저인증 - click
- JWT를 활용한 유저 인증을 구현했습니다.- SMTP를 활용해 유저의 이메일에 유저의 인증키를 전송하는 기능을 구현했습니다.
게시물 확인 - click
- 게시물 확인 및 상세, 좋아요, 공유 기능을 구현했습니다.통계 - click
- 유저, 또는 브랜드 해시태그의 통계를 확인할 수 있습니다.HOT Hashtag - click
- 최근 3시간 이내에 게시물에서 가장 많이 사용된 해시태그를 조회할 수 있습니다.RESTful API 설계 - click
- Open API를 활용한 Self-descriptive Message 충족- "/swagger-ui"에서 해당 내용 확인 가능
- Dirty Checking에 대한 짧은 고찰
- Security 3.0에서 주의할 점
- jjwt 0.9와 jjwt 0.10 이상 버전 차이
- QueryDsl
- GitHub에서 Pull Request의 Merge 종류 차이
이유진 | 윤준영 | 김가영 | 김성은 |
---|---|---|---|
@U-jinLee | @upqnu | @gabang2 | @chickencoc |