-
Notifications
You must be signed in to change notification settings - Fork 4
무드캐처 REST API
황수민 edited this page Oct 3, 2022
·
12 revisions
| 웰컴메세지 | 회원가입 및 로그인 | 유저정보 | 게시물 | 아이템 | 댓글 | 대댓글 | 좋아요 | 알림 | 무드맵 |
|---|---|---|---|---|---|---|---|---|---|
| start | auth | users | posts | musinsa | comments | recomments | like | notice | map |
start
| Descriptions | Method | URI | FE | BE |
|---|---|---|---|---|
| 웰컴메세지 | GET | /api/start | 신수정 | 조권영 |
{ status : 200, msg:"초기 화면 조회 성공", data: { startMsg : "무드캐처에 오신 걸 환영합니다!" } }
auth
| Descriptions | Method | URI | FE | BE |
|---|---|---|---|---|
| 회원가입 | POST | /api/auth/signup | 신수정 | 이수범 |
| 이메일 확인 | GET | /api/auth/checkEmail?email
|
신수정 | 이수범 |
| 인증번호 발송 | POST | /api/auth/sendEmail?type
|
신수정 | 이수범 |
| 인증번호 확인 | GET | /api/auth/check-authnum?email&authNum
|
신수정 | 이수범 |
| 로컬 로그인 | POST | /api/auth/login | 신수정 | 황수민 |
| 소셜 로그인 | GET | /api/auth/kakao | 신수정 | 조권영 |
| 닉네임 확인 | GET | /api/auth/checkNickname?nickname
|
신수정 | 이수범 |
| 닉네임/성별/나이 추가 | POST | /api/auth/detail | 신수정 | 이수범 |
| 비밀번호 변경 | PUT | /api/auth/updatePw?email&authNum
|
신수정 | 이수범 |
| 로그아웃 | DELETE | /api/auth/logout | 박준수 | 황수민 |
{ "email" : "test123@naver.com", "password" : "qwer123!", "confirmPw" : "qwer123!", "authNum" : "123456" }
{ status : 201, msg : "회원가입 성공", data : {} }
<req.query> { "email" : "abc@naver.com" }
{ status : 200, msg : "이메일 확인 성공", data : {} }
<req.query> { "type" : "signup" 또는 "password" } <req.body> { "email" : "abc123@naver.com" }
{ status : 200, msg : "인증번호 발송 성공", data : {} }
<req.query> { "email" : "abc123@naver.com", "authNum" : "123456" }
{ status : 200 msg: "인증번호 확인 성공", data : { result: true } }, { status : 400 msg : "인증번호 확인 실패", data : { result: false } },
{ "email" : "test123@naver.com", "password" : "1234abc!" }
{ status : 200, "url" : "브라우저 주소/login/detail?exist=${exist}&token=${token}" }
- exist : 기존 회원이면 true, 신규 회원이면 false
- token : "xxx.yyy.zzz"
{ status : 200, }
- "브라우저 주소/login/detail?exist=${exist}&token=${token}"로 리다이렉트
- exist : 기존 회원이면 true, 신규 회원이면 false
- token : "xxx.yyy.zzz"
<req.query> { "nickname" : "테스트", }
{ status : 200, msg : "닉네임 확인 성공", data : {} }
{ "nickname" : "권영", "age" : "20대", "gender" : "남자" }
{ status : 200, msg : "닉네임, 성별, 나이 추가 성공", data : {} }
<req.query> { "email" : "abc123@naver.com", "authNum" : "123456" } <req.body> { "password" : "qwer123!" , "confirmPw" : "qwer123!" }
{ status : 200, msg : "비밀번호 변경 성공", data : {} }
{ status : 200, msg : "로그아웃 성공", data : {} }
users
| Descriptions | Method | URI | FE | BE |
|---|---|---|---|---|
| 유저정보 조회 | GET | /api/users/:userId
|
박준수 | 황수민 |
| 유저정보 수정 | PUT | /api/users?nickname&gender&age&original
|
신수정 | 황수민 |
| 프로필 아이콘 수정 | PATCH | /api/users | 신수정 | 황수민 |
| 회원탈퇴 | DELETE | /api/users/signout | 신수정 | 이수범 |
<req.params> { "userId" : 1 }
{ status : 200, msg : "유저 정보 조회 성공", data : { userStatus: { userId : 99 nickname : "영수", imgUrl : "http://abc", grade : "man 1", gender : "남자", age : "10대", repPostId : 3, isExistsNotice : true, moodPoint : "200" }, } }
<req.query> { "nickname" : "수수", "gender" : 남자, "age" : 20대, "original" : true //유저 사진 기본 이미지로 변경 } <req.body> { userValue : FormData }
- req.query의 nickname, age, gender는 필수값이고 original은 선택사항
- req.query의 "original" : true 기재 시 req.body의 userValue는 기재X
{ status : 201, msg : "유저 정보 변경 성공", data : {} }
<req.body> {profileIcon : "moody"} 또는 {profileIcon : "woman"} 또는 {profileIcon : "man"},
{ status : 201, msg : "프로필 아이콘 변경 성공", data : { userStatus: { "grade" : "moody 1", }, } }
{ status : 200, msg : "유저 정보 삭제 성공", data :{} }
posts
| Descriptions | Method | URI | FE | BE |
|---|---|---|---|---|
| 게시물 작성 | POST | /api/posts | 박준수 | 조권영 |
| 이미지 업데이트 | PUT | /api/posts/:postId/image |
박준수 | 조권영 |
| 게시물 전체 조회 | GET | /api/posts/?userId&keyword&sort&type&gender&page&count&order
|
박준수,신수정 | 조권영 |
| 게시물 상세 조회 | GET | /api/posts/detail/:postId
|
박준수 | 황수민 |
| 게시물 수정 | PUT | /api/posts/:postId
|
박준수 | 조권영 |
| 게시물 삭제 | DELETE | /api/posts/:postId
|
박준수 | 조권영 |
| 대표 게시물 지정 | PATCH | /api/posts/:postId
|
박준수 | 조권영 |
| 대표 게시물 조회 | GET | /api/posts/rep?userId
|
박준수 | 황수민 |
| 인기 게시물 조회 | GET | /api/posts/popular | 박준수 | 황수민 |
| 명예의 전당 조회 | GET | /api/posts/honor?page&count
|
신수정 | 황수민 |
{ post: { title : "제목", content : "내용", }, items: [ { imgUrl : "http://abc", brand : "나이키", name : "가나다 운동화" , price : "79000원", url : "http://abc" } * 여러 개 ] }
{ status : 201, msg : "게시물 작성 성공", data :{ post: { postId : 1, title : "제목", content : "내용", imgUrl : "http://abc", }, items: [ { imgUrl : "http://abc", brand : "나이키", name : "가나다 운동화" , price : "79000원", url : "http://abc" 또는 null } * 여러 개 ] } }
{ postImage : FormData }
{ status : 201, msg : "게시물 작성 성공", data :{ post: { postId : 1, title : "제목", content : "내용", imgUrl : "http://abc", }, items: [ { imgUrl : "http://abc", brand : "나이키", name : "가나다 운동화" , price : "79000원", url : "http://abc" 또는 null } * 여러 개 ] } }
<req.query> { "userId" : 1 또는 null "keyword" : "가방" 또는 null "sort" : "title" 또는 "writer" 또는 null "type" : "my" 또는 "1(userId)" 또는 null "gender" : "남자" 또는 "여자" 또는 null "page" // default 1 "count" //default 8 "order" : "recent" 또는 "popular" }
{ status : 200, msg : "게시물 전체 조회 성공", data : { allPosts : [ { postId : 1, title : content: createdAt: likeCount: likeStatus: userId: imgUrl : "http://abc", } * 8 ], } }
<req.params> { "postId" : 1 }
{ status : 200, msg : "게시물 상세 조회 성공" data : { post: { userId : 1, postId : 1, title : "제목", content : "내용", imgUrl : "http://abc", likeCount : 10, createdAt : "DateForm", likeStatus : true //게시물을 좋아요 여부 }, items: [ { imgUrl : "http://abc", brand : "나이키", name : "가나다 운동화" , price : "79000원", url : "http://abc" 또는 null } * 여러 개 ], }, }
{ post: { title : "제목", content : "내용", }, items: [ { imgUrl : "http://abc", brand : "나이키", name : "가나다 운동화", price : "79000원", url : "http://abc", } * 여러 개 ] }
{ status : 200, msg : "게시물 수정 성공" data : { post: { userId : 1, postId : 1, title : "제목", content : "내용", imgUrl : "http://abc", likeCount : 10, createdAt : "DateForm", likeStatus : true //게시물을 좋아요 여부 }, items: [ { imgUrl : "http://abc", brand : "나이키", name : "가나다 운동화" , price : "79000원", url : "http://abc" 또는 null } * 여러 개 ], }, }
<req.params> { "postId" : 1 }
{ status : 200, msg : "게시물 삭제 성공", data : {} }
<req.params> { "postId" : 1 }
{ status : 200, msg : "대표 게시물 지정 성공", data : {} }
<req.query> { "userId" : 1 }
{ status : 200, msg : "대표 게시물 조회 성공" data : { myRepPost: { postId : 1, userId : 1, imgUrl : "http://abc", title : "제목", content : "내용", likeCount : 10, createdAt : "DateForm" } } }
{ status : 200, msg:"인기 게시물 조회 성공", data: { hotPosts:[ { postId : 1, imgUrl : "http://abc", userId : 1, delete : false } * 3 ], } }
<req.query> { "page" : 1, "count" : 8 }
{ status : 200, msg :"명예의 전당 게시물 조회 성공", data : { honorPosts:[ { postId : 1, rank : 1, title : content: createdAt: 게시물작성일X, hotposts 지정일 likeCount: likeStatus: userId: imgUrl : "http://abc", } * 8 ], } }
musinsa
| Descriptions | Method | URI | FE | BE |
|---|---|---|---|---|
| 무신사 상품 찾기 | GET | /api/musinsa/:keyword
|
박준수 | 황수민 |
<req.params> { "keyword" : "테스트", }
{ status : 200, msg : "무신사 아이템 조회 성공", data :{ items: [ { imgUrl : "http://abc", brand : "나이키", name : "아디다스 운동화" , price : "79000원 50000원", url : "http://abc" 또는 null } * 최대 30개 ] } }
comments
| Descriptions | Method | URI | FE | BE |
|---|---|---|---|---|
| 댓글 작성 | POST | /api/comments?postId
|
박준수 | 이수범 |
| 댓글 조회 | GET | /api/comments?postId
|
박준수 | 이수범 |
| 댓글 수정 | PUT | /api/comments/:commentId
|
박준수 | 이수범 |
| 댓글 삭제 | DELETE | /api/comments/:commentId
|
박준수 | 이수범 |
<req.params> { "postId" : 1, } <req.body> { "content" : "댓글입니다", }
{ status : 201, msg : "댓글 생성 성공", data : { comment : { commentId : 1, userId : 1, postId: 1, imgUrl : "http://abc", content : "댓글입니다", nickname : "영수", grade : "man 4", createdAt : "방금전/*분전/*시간전" } } }
<req.params> { "postId" : 1, }
{ status : 200, msg : "댓글 조회성공" data : { comments: [ { userId : 1, commentId : 2, content : "좋아요", imgUrl : "http://abc", nickname : "영수", grade : "man 1", createdAt : "방금전/*분전/*시간전", recommentCount : 1 recomments: [ { userId : 1, recommentId : 1, content : "좋아요", imgUrl : "http://abc", nickname : "영수", grade : "man 1", createdAt : "방금전/*분전/*시간전" } * 여러 개 ] } * 여러 개 ] } }
<req.params> { "commentId" : 1, } <req.body> { "content" : "수정된 댓글", }
{ status : 201, msg : "댓글 수정 성공", data : { comment : { postId : 99, commentId : 1, userId : 1, imgUrl : "http://abc", content : "수정 된 댓글입니다", nickname : "영수", grade : "man 4", createdAt : "DateForm" } } }
<req.params> { "commentId" : 1, }
{ status : 200, msg : "댓글 삭제 성공", data : {} }
recomments
| Descriptions | Method | URI | FE | BE |
|---|---|---|---|---|
| 대댓글 작성 | POST | /api/recomments?commentId
|
박준수 | 이수범 |
| 대댓글 수정 | PUT | /api/recomments/:recommentId
|
박준수 | 이수범 |
| 대댓글 삭제 | DELETE | /api/recomments/:recommentId
|
박준수 | 이수범 |
<req.query> { "commentId" : 1, } <req.body> { "content" : "댓글입니다", }
{ status : 201, msg : "대댓글 생성 성공", data : { recomment : { commentId: 99, recommentId : 1, userId : 1, imgUrl : "http://abc", content : "댓글입니다", nickname : "영수", grade : "man 4", createdAt : "DateForm" } } }
<req.params> { "recommentId" : 1, } <req.body> { "content" : "수정된 댓글", }
{ status : 201, msg : "대댓글 수정 성공", data : { recomment : { commentId : 1, recommentId : 1, userId : 1, imgUrl : "http://abc", content : "댓글입니다", nickname : "영수", grade : "man 5", createdAt : "DateForm" } } }
<req.params> { "recommentId" : 1, }
{ status : 200, msg : "대댓글 삭제 성공", data : {} }
like
| Descriptions | Method | URI | FE | BE |
|---|---|---|---|---|
| 좋아요 등록/취소 | PATCH | /api/like/?postId
|
신수정 | 황수민 |
<req.query> { "postId" : 1 }
{ status : 201, msg : "좋아요 등록 성공" data : { "likeCount" : 10 +1 } } 또는 { status : 201, msg : "좋아요 취소 성공" data : { "likeCount" : 10 -1 } }
notice
| Descriptions | Method | URI | FE | BE |
|---|---|---|---|---|
| 알림 조회 | POST | /api/notice | 신수정 | 조권영 |
| 알림 개별 삭제 | DELETE | /api/notice/:noticeId
|
신수정 | 조권영 |
| 알림 전체 삭제 | DELETE | /api/notice | 신수정 | 조권영 |
{ status : 200, msg : "알림 조회 성공" data : { notices : [ { msg: "권영님이 게시물에 댓글을 달았습니다!", noticeId : 1, postId : 1, duplication : 2, imgUrl : http:// 해당 게시물의 이미지, 이미지가 필요 없는 알림이라면 default.jpg 기본이미지 createdAt : 알림의 작성 시간 } ] } }
<req.params> { "noticeId" : 1 }
{ status : 200 msg : "알림 개별 삭제 성공" data : {} }
{ status : 200 msg : "알림 전체 삭제 성공" data : {} }
map
| Descriptions | Method | URI | FE | BE |
|---|---|---|---|---|
| 위치좌표 갱신 | PATCH | /api/map | 박준수 | 조권영 |
| 주변 유저정보 조회 | GET | /api/map?dist
|
박준수 | 조권영 |
| 무드 맵 ON/OFF | PATCH | /api/map/on-off | 박준수 | 황수민 |
{ "latitude" : 33.xxx "longitude" : 127.xx }
{ status : 200, msg : "유저 좌표 업데이트" data : { "isExistsMap" : true //사용자가 지도의 기능 사용을 허락하는지(위치 좌표 공개 여부) } }
<req.query> { "dist" : 500.0 }
{ status : 200, msg : "주변 사람 유저정보 배열 반환", data : { aroundUser:[ { userId, nickname, imgUrl, latitude, longitude } ] } }
{ status : 201, msg : "무드 맵 ON" data : { "isExistsMap" : true } } 또는 { status : 201, msg : "무드 맵 OFF" data : { "isExistsMap" : false } }