Skip to content

API DOC

HYXO edited this page Jan 13, 2023 · 9 revisions

[API DOC]

1. USER

  • userId를 통해 특정 단일 유저 정보를 조회한다.
  • 응답예시

스크린샷 2023-01-13 오전 12 02 51

  • userId의 토큰과 이더 잔액을 조회한다.
  • 응답예시

스크린샷 2023-01-13 오전 12 03 20

GET http://20.214.190.113:5050/users/:userId/nfts/?offset={offset}&limit={limit}

  • userId가 소유한 모든 nft 정보를 조회한다.
  • pagenation을 고려하여 offset과 limit 값을 query로 받고, 둘 중 하나라도 없을 경우 전체 데이터를 응답값으로 보낸다.
  • 입력예시

스크린샷 2023-01-11 오후 8 52 57

  • 응답예시

스크린샷 2023-01-11 오후 5 19 43

GET http://20.214.190.113:5050/users/:userId/posts/?offset={offset}&limit={limit}

  • userId가 작성한 모든 post 정보를 조회한다.
  • pagenation을 고려하여 offset과 limit값을 query로 받고, 둘 중 하나라도 없을 경우 전체 데이터를 응답값으로 보낸다.
  • 입력예시(포스트맨 기준)

스크린샷 2023-01-11 오후 8 53 59

  • 응답예시

스크린샷 2023-01-11 오후 5 20 49

  • 회원가입을 한다.
  • 내부 동작은 다음과 같다.
    1. db에 email이 존재하는지 검사한다.
    2. web3 계정을 생성한다.
    3. 웰컴 eth, erc20, nft를 지급받는다.
    4. db를 갱신한다.
    5. 갱신된 db 결과를 응답으로 준다.
  • 입력 예시
{
    "email":"user3Email@test.com",
    "password":"user3password",
    "nickname":"user3nickname"
}
  • 응답 예시
{
    "id": 3,
    "email": "user3Email@test.com",
    "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"
}
  • 로그인 한다.
  • 로그인을 호출하면 응답으로 accessToken을 돌려준다.
  • 쿠키에는 refreshToken을 보내준다.

Untitled (1)

  • 받은 accessToken을 헤더의 ‘Authorization’에 삽입해서 요청하면 서버는 토큰을 파싱해서 인증해준다.
  • 쿠키에 저장된 refreshToken이 있으면 새로운 accessToken을 발행해준다.
  • 응답예시

Untitled (2)

  • 유저 정보 수정. 비밀번호와 닉네임만 변경 가능.
  • 유저 id 값을 req.params 로 넣고, req.body에 password 와 nickname 입력.
  • 네이버 로그인의 경우 닉네임 변경만 가능하며, 로컬 로그인의 경우 비밀번호와 닉네임 모두 혹은 둘 중 하나만 변경도 가능하다.
  • 권한 인증 과정이 있기 때문에 req.headers.authorization 에 액세스 토큰이 보내주어야 한다.
  • 입력예시(포스트맨 기준)

스크린샷 2023-01-11 오후 10 05 54

  • 응답예시

스크린샷 2023-01-11 오후 10 06 18



2. POST

GET http://20.214.190.113:5050/posts/?offset={offset}&limit={limit}

  • 모든 post들의 정보를 조회한다.
  • pagenation을 고려하여 offset과 limit값을 query로 받고, 둘 중 하나라도 없을 경우 전체 데이터를 응답값으로 보낸다.
  • 입력예시(포스트맨 기준)

스크린샷 2023-01-11 오후 8 56 53

  • 응답예시

스크린샷 2023-01-11 오후 4 03 29

  • postId에 해당하는 post 정보를 조회한다.
  • 응답예시

스크린샷 2023-01-13 오전 12 04 51

  • 새로운 게시글 등록 기능
  • 입력예시
{ 
	"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 호출 전 예시

스크린샷 2023-01-13 오전 12 05 31

  • 응답 예시

스크린샷 2023-01-13 오전 12 14 54

  • 응답 후 결과 예시

스크린샷 2023-01-13 오전 12 16 15

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 에 액세스 토큰이 보내주어야 한다.
  • 입력예시

스크린샷 2023-01-11 오후 8 49 34

  • 응답예시

스크린샷 2023-01-11 오후 8 50 54

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과 상관없이 검색어에 의해 필터된 모든 데이터의 수를 반환한다.
  • 입력예시(포스트맨 기준)

스크린샷 2023-01-12 오전 2 34 13

  • 응답예시

스크린샷 2023-01-12 오전 2 49 44



3. NFT

GET http://20.214.190.113:5050/nfts/?offset={offset}&limit={limit}

  • 모든 nft들의 정보를 조회한다.
  • pagenation을 고려하여 offset과 limit값을 query로 받고, 둘 중 하나라도 없을 경우 전체 데이터를 응답값으로 보낸다.
  • 입력예시(포스트맨 기준)

스크린샷 2023-01-11 오후 8 58 24

  • 응답예시

스크린샷 2023-01-11 오후 3 59 27

  • nftId에 해당하는 nft 정보를 조회한다.
  • 새로운 nft를 민팅한다.
  • multipart formdata로 image에 이미지 파일을, 나머지 바디에 입력값을 넣는다.
  • 입력예시(포스트맨 기준)

Untitled (3)

  • 응답예시

Untitled (4)

Index

Introduce

Role & Rule

Design

Tech

Demo

Clone this wiki locally