-
Notifications
You must be signed in to change notification settings - Fork 4
API DOC
HYXO edited this page Jan 13, 2023
·
9 revisions
[API DOC]
GET http://20.214.190.113:5050/users/:userId
- userId를 통해 특정 단일 유저 정보를 조회한다.
- 응답예시
GET http://20.214.190.113:5050/users/:userId/balance
- userId의 토큰과 이더 잔액을 조회한다.
- 응답예시
GET http://20.214.190.113:5050/users/:userId/nfts/?offset={offset}&limit={limit}
- userId가 소유한 모든 nft 정보를 조회한다.
- pagenation을 고려하여 offset과 limit 값을 query로 받고, 둘 중 하나라도 없을 경우 전체 데이터를 응답값으로 보낸다.
- 입력예시
- 응답예시
GET http://20.214.190.113:5050/users/:userId/posts/?offset={offset}&limit={limit}
- userId가 작성한 모든 post 정보를 조회한다.
- pagenation을 고려하여 offset과 limit값을 query로 받고, 둘 중 하나라도 없을 경우 전체 데이터를 응답값으로 보낸다.
- 입력예시(포스트맨 기준)
- 응답예시
POST http://20.214.190.113:5050/users/join
- 회원가입을 한다.
- 내부 동작은 다음과 같다.
- db에 email이 존재하는지 검사한다.
- web3 계정을 생성한다.
- 웰컴 eth, erc20, nft를 지급받는다.
- db를 갱신한다.
- 갱신된 db 결과를 응답으로 준다.
- 입력 예시
{
"email":"[email protected]",
"password":"user3password",
"nickname":"user3nickname"
}
- 응답 예시
{
"id": 3,
"email": "[email protected]",
"password": "user3password",
"wallet_account": "0xF4f6a43FEB947606DB4eaAA131328994Cf3b029b",
"eth": "10000000000000000",
"login_provider": "local",
"nickname": "user3nickname",
"erc20": "10000000000000000",
"wallet_pk": "0xb1a4db77c0b02ce9702231529344e4188cd45336d013b3db60cd959aeb1e1d7b",
"updatedAt": "2023-01-07T14:59:06.055Z",
"createdAt": "2023-01-07T14:59:05.772Z"
}
POST http://20.214.190.113:5050/users/login
- 로그인 한다.
- 로그인을 호출하면 응답으로 accessToken을 돌려준다.
- 쿠키에는 refreshToken을 보내준다.
- 받은 accessToken을 헤더의 ‘Authorization’에 삽입해서 요청하면 서버는 토큰을 파싱해서 인증해준다.
- 쿠키에 저장된 refreshToken이 있으면 새로운 accessToken을 발행해준다.
- 응답예시
- 유저 정보 수정. 비밀번호와 닉네임만 변경 가능.
- 유저 id 값을 req.params 로 넣고, req.body에 password 와 nickname 입력.
- 네이버 로그인의 경우 닉네임 변경만 가능하며, 로컬 로그인의 경우 비밀번호와 닉네임 모두 혹은 둘 중 하나만 변경도 가능하다.
- 권한 인증 과정이 있기 때문에 req.headers.authorization 에 액세스 토큰이 보내주어야 한다.
- 입력예시(포스트맨 기준)
- 응답예시
GET http://20.214.190.113:5050/posts/?offset={offset}&limit={limit}
- 모든 post들의 정보를 조회한다.
- pagenation을 고려하여 offset과 limit값을 query로 받고, 둘 중 하나라도 없을 경우 전체 데이터를 응답값으로 보낸다.
- 입력예시(포스트맨 기준)
- 응답예시
GET http://20.214.190.113:5050/posts/:postId
- postId에 해당하는 post 정보를 조회한다.
- 응답예시
POST http://20.214.190.113:5050/posts
- 새로운 게시글 등록 기능
- 입력예시
{
"user_id":"1",
"title":"POST /posts test",
"location":"2222",
"store_name":"POST post test store name",
"content":"POST post test content",
"uri":"https://cdn.pixabay.com/photo/2014/06/03/19/38/board-361516__340.jpg"
}
- 출력예시
{
"posts": {
"id": 33,
"title": "POST /posts test",
"location": "2222",
"store_name": "POST post test store name",
"content": "POST post test content",
"views": 0,
"likes": 0,
"user_id": "1",
"updatedAt": "2023-01-07T15:11:00.648Z",
"createdAt": "2023-01-07T15:11:00.648Z"
},
"images": {
"id": 34,
"uri": "https://cdn.pixabay.com/photo/2014/06/03/19/38/board-361516__340.jpg",
"post_id": 33,
"updatedAt": "2023-01-07T15:11:00.740Z",
"createdAt": "2023-01-07T15:11:00.740Z"
}
}
PUT http://20.214.190.113:5050/posts/:postId/likes
- 좋아요 숫자를 1 증가시킨다.
- PUT 요청이지만 req.body로 들어가는 파라미터는 없습니다.
- like를 유저별로 관리하고, 어뷰징을 필터링하는 로직은 없습니다. (구현하려면 DB 테이블을 따로 만들어야됨)
- 응답은 현재 좋아요 개수 값과 성공 메시지를 응답한다
- API 호출 전 예시
- 응답 예시
- 응답 후 결과 예시
POST http://20.214.190.113:5050/posts/:postId/deletepost
- 게시물 및 해당 게시물의 이미지 삭제 기능
- req.params로 들어오는 postId 를 통해 참조되어 있는 이미지를 먼저 삭제하고 게시물을 삭제한 후 성공 메시지를 반환한다.
- 응답 예시
{
"data": null,
"message": "successfully deleted!"
}
PUT http://20.214.190.113:5050/posts/:postId/updatepost
- 게시물 내용 갱신 기능
- 수정할 게시물의 id를 req.params로 입력하고, title, location, content, store_name 중 갱신할 값을 수정하여 body 값으로 보내면, 수정된 데이터만 수정 후 변경된 결과를 응답으로 반환한다.
- 권한 인증 과정이 있기 때문에 req.headers.authorization 에 액세스 토큰이 보내주어야 한다.
- 입력예시
- 응답예시
GET http://20.214.190.113:5050/posts/findposts/?search={검색어}&offset={offset}&limit={limit}
- 게시물 검색 기능
- search params를 통해서 검색어를 입력하여 게시물을 필터링하며, title과 content에 포함되는 단어를 search를 통해 입력할 경우 해당되는 데이터들을 출력한다.
- 추가적으로 이때에도 offset과 limit params 를 기입할 경우 페이지네이션이 적용된 상태로 응답된다.totalNum은 limit, offset과 상관없이 검색어에 의해 필터된 모든 데이터의 수를 반환한다.
- 입력예시(포스트맨 기준)
- 응답예시
GET http://20.214.190.113:5050/nfts/?offset={offset}&limit={limit}
- 모든 nft들의 정보를 조회한다.
- pagenation을 고려하여 offset과 limit값을 query로 받고, 둘 중 하나라도 없을 경우 전체 데이터를 응답값으로 보낸다.
- 입력예시(포스트맨 기준)
- 응답예시
GET http://20.214.190.113:5050/nfts/:nftId
- nftId에 해당하는 nft 정보를 조회한다.
POST http://20.214.190.113:5050/nfts
- 새로운 nft를 민팅한다.
- multipart formdata로 image에 이미지 파일을, 나머지 바디에 입력값을 넣는다.
- 입력예시(포스트맨 기준)
- 응답예시
- 🏠 Home
- 💾 Product
- 🧩 Function
- ❓ Requirement
- 🗄 DB Schema
- 📋 API DOC
- 🧷 Architecture
- ⭐️ Tech Stack
- 📱 Go Demo