소개

피드

피드 등록 🔐

성공

HTTP request
POST /api/feeds HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 344

{
  "review" : "맛있어요!",
  "storeId" : "1",
  "images" : [ {
    "menu" : {
      "name" : "마라탕",
      "rating" : 4
    },
    "imageId" : "ee057b4c6571b1078b989ed2"
  }, {
    "menu" : {
      "name" : "감자탕",
      "rating" : 3
    },
    "imageId" : "ee057b756571b1078b989ed3"
  } ],
  "storeMoodIds" : [ "1", "3", "4" ]
}
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:17 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 39

{
  "id" : "ee057be86571b1078b989ed6"
}

바디가 없을 때

HTTP request
POST /api/feeds HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:17 GMT
Connection: close
Content-Length: 96

{
  "message" : "입력값이 올바르지 않습니다.",
  "code" : "g001",
  "errors" : { }
}

storeId가 없을 때

HTTP request
POST /api/feeds HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 325

{
  "review" : "맛있어요!",
  "storeMoodIds" : [ "1", "3", "4" ],
  "images" : [ {
    "menu" : {
      "name" : "마라탕",
      "rating" : 4
    },
    "imageId" : "ee0587186571b1078b989f1c"
  }, {
    "menu" : {
      "name" : "감자탕",
      "rating" : 3
    },
    "imageId" : "ee0587366571b1078b989f1d"
  } ]
}
HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:19 GMT
Connection: close
Content-Length: 150

{
  "message" : "입력값이 올바르지 않습니다.",
  "code" : "g001",
  "errors" : {
    "storeId" : "가게 정보는 필수입니다."
  }
}

리뷰 글자 수가 1 글자와 500 글자 사이가 아닌 0 글자일 때

HTTP request
POST /api/feeds HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 331

{
  "review" : "",
  "storeId" : "1",
  "images" : [ {
    "menu" : {
      "name" : "마라탕",
      "rating" : 4
    },
    "imageId" : "ee05850d6571b1078b989f10"
  }, {
    "menu" : {
      "name" : "감자탕",
      "rating" : 3
    },
    "imageId" : "ee05852b6571b1078b989f11"
  } ],
  "storeMoodIds" : [ "1", "3", "4" ]
}
HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:19 GMT
Connection: close
Content-Length: 211

{
  "message" : "입력값이 올바르지 않습니다.",
  "code" : "g001",
  "errors" : {
    "review" : "가게 리뷰는 최소 1글자부터 최대 500글자까지여야 합니다.;must not be blank"
  }
}

리뷰 글자 수가 1 글자와 500 글자 사이가 아닌 501 글자일 때

HTTP request
POST /api/feeds HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 832

{
  "review" : "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "storeId" : "1",
  "images" : [ {
    "menu" : {
      "name" : "마라탕",
      "rating" : 4
    },
    "imageId" : "ee0586106571b1078b989f16"
  }, {
    "menu" : {
      "name" : "감자탕",
      "rating" : 3
    },
    "imageId" : "ee0586326571b1078b989f17"
  } ],
  "storeMoodIds" : [ "1", "3", "4" ]
}
HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:19 GMT
Connection: close
Content-Length: 193

{
  "message" : "입력값이 올바르지 않습니다.",
  "code" : "g001",
  "errors" : {
    "review" : "가게 리뷰는 최소 1글자부터 최대 500글자까지여야 합니다."
  }
}

무드가 1개부터 3개까지가 아닌 0개일 때

HTTP request
POST /api/feeds HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 330

{
  "review" : "맛있어요!",
  "storeId" : "1",
  "images" : [ {
    "menu" : {
      "name" : "마라탕",
      "rating" : 4
    },
    "imageId" : "ee058c596571b1078b989f53"
  }, {
    "menu" : {
      "name" : "감자탕",
      "rating" : 3
    },
    "imageId" : "ee058c856571b1078b989f54"
  } ],
  "storeMoodIds" : [ ]
}
HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:21 GMT
Connection: close
Content-Length: 177

{
  "message" : "입력값이 올바르지 않습니다.",
  "code" : "g001",
  "errors" : {
    "storeMoodIds" : "무드는 최소 1개부터 최대 3개까지입니다."
  }
}

무드가 1개부터 3개까지가 아닌 4개일 때

HTTP request
POST /api/feeds HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 349

{
  "review" : "맛있어요!",
  "storeId" : "1",
  "images" : [ {
    "menu" : {
      "name" : "마라탕",
      "rating" : 4
    },
    "imageId" : "ee0580316571b1078b989ef0"
  }, {
    "menu" : {
      "name" : "감자탕",
      "rating" : 3
    },
    "imageId" : "ee05806a6571b1078b989ef1"
  } ],
  "storeMoodIds" : [ "1", "2", "3", "4" ]
}
HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:18 GMT
Connection: close
Content-Length: 177

{
  "message" : "입력값이 올바르지 않습니다.",
  "code" : "g001",
  "errors" : {
    "storeMoodIds" : "무드는 최소 1개부터 최대 3개까지입니다."
  }
}

메뉴가 1개 이상이 아닐 때 즉 0개일 때

HTTP request
POST /api/feeds HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 107

{
  "review" : "맛있어요!",
  "storeId" : "1",
  "images" : [ ],
  "storeMoodIds" : [ "1", "2", "3" ]
}
HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:18 GMT
Connection: close
Content-Length: 157

{
  "message" : "입력값이 올바르지 않습니다.",
  "code" : "g001",
  "errors" : {
    "images" : "메뉴는 1개 이상이어야 합니다."
  }
}

피드 전체 조회 ❤️

성공

HTTP request
GET /api/feeds?page=0&size=10 HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:20 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 2989

{
  "content" : [ {
    "id" : "ee058b0c6571b1078b989f44",
    "member" : {
      "id" : "ee058a046571b1078b989f33",
      "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
      "nickname" : "푸반",
      "tasteMood" : {
        "id" : "ee058a046571b1078b989f33",
        "name" : "베지테리언"
      }
    },
    "createdAt" : "2024-12-22T10:59:20.972176",
    "updatedAt" : null,
    "store" : {
      "id" : "1",
      "name" : "영업중 식당"
    },
    "review" : "맛없어요!",
    "storeMood" : [ {
      "id" : "1",
      "name" : "가족과 함께"
    }, {
      "id" : "2",
      "name" : "혼밥"
    }, {
      "id" : "4",
      "name" : "데이트"
    } ],
    "images" : [ {
      "id" : "ee058b696571b1078b989f4b",
      "image" : {
        "id" : "ee058ac46571b1078b989f40",
        "url" : "https://s3Url/key"
      },
      "menu" : {
        "name" : "크림 파스타",
        "rating" : 1
      }
    }, {
      "id" : "ee058b696571b1078b989f4c",
      "image" : {
        "id" : "ee058ae26571b1078b989f41",
        "url" : "https://s3Url/key"
      },
      "menu" : {
        "name" : "토마토 파스타",
        "rating" : 2
      }
    } ],
    "likeCount" : 0,
    "isLiked" : false,
    "commentCount" : 1
  }, {
    "id" : "ee058a7f6571b1078b989f39",
    "member" : {
      "id" : "ee0589cf6571b1078b989f31",
      "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
      "nickname" : "아티",
      "tasteMood" : {
        "id" : "ee0589cf6571b1078b989f31",
        "name" : "베지테리언"
      }
    },
    "createdAt" : "2024-12-22T10:59:20.831689",
    "updatedAt" : null,
    "store" : {
      "id" : "1",
      "name" : "영업중 식당"
    },
    "review" : "맛있어요!",
    "storeMood" : [ {
      "id" : "1",
      "name" : "가족과 함께"
    }, {
      "id" : "3",
      "name" : "감성"
    }, {
      "id" : "4",
      "name" : "데이트"
    } ],
    "images" : [ {
      "id" : "ee058b736571b1078b989f4d",
      "image" : {
        "id" : "ee058a386571b1078b989f35",
        "url" : "https://s3Url/key"
      },
      "menu" : {
        "name" : "마라탕",
        "rating" : 4
      }
    }, {
      "id" : "ee058b736571b1078b989f4e",
      "image" : {
        "id" : "ee058a556571b1078b989f36",
        "url" : "https://s3Url/key"
      },
      "menu" : {
        "name" : "감자탕",
        "rating" : 3
      }
    } ],
    "likeCount" : 0,
    "isLiked" : false,
    "commentCount" : 1
  } ],
  "pageable" : {
    "sort" : {
      "sorted" : true,
      "unsorted" : false,
      "empty" : false
    },
    "pageNumber" : 0,
    "pageSize" : 10,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : true,
    "unsorted" : false,
    "empty" : false
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 2,
  "size" : 10,
  "empty" : false
}

피드 개별 조회 ❤️

성공

HTTP request
GET /api/feeds/ee0588886571b1078b989f26 HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:20 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1163

{
  "id" : "ee0588886571b1078b989f26",
  "member" : {
    "id" : "ee0587ac6571b1078b989f1e",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "nickname" : "아티",
    "tasteMood" : {
      "id" : "ee0587ac6571b1078b989f1e",
      "name" : "베지테리언"
    }
  },
  "store" : {
    "id" : "1",
    "name" : "영업중 식당"
  },
  "createdAt" : "2024-12-22T10:59:20.328582",
  "updatedAt" : null,
  "review" : "맛있어요!",
  "storeMood" : [ {
    "id" : "1",
    "name" : "가족과 함께"
  }, {
    "id" : "3",
    "name" : "감성"
  }, {
    "id" : "4",
    "name" : "데이트"
  } ],
  "images" : [ {
    "id" : "ee0589526571b1078b989f2f",
    "image" : {
      "id" : "ee0588306571b1078b989f22",
      "url" : "https://s3Url/key"
    },
    "menu" : {
      "name" : "마라탕",
      "rating" : 4
    }
  }, {
    "id" : "ee0589536571b1078b989f30",
    "image" : {
      "id" : "ee05884e6571b1078b989f23",
      "url" : "https://s3Url/key"
    },
    "menu" : {
      "name" : "감자탕",
      "rating" : 3
    }
  } ],
  "likeCount" : 1,
  "isLiked" : true,
  "commentCount" : 1
}

피드 수정 🔐

성공

HTTP request
PUT /api/feeds/ee0583176571b1078b989f00 HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 314

{
  "review" : "맛있게 먹었습니다.2",
  "storeId" : "2",
  "images" : [ {
    "menu" : {
      "name" : "마라탕2",
      "rating" : 5
    },
    "imageId" : "3"
  }, {
    "menu" : {
      "name" : "감자탕2",
      "rating" : 5
    },
    "imageId" : "4"
  } ],
  "storeMoodIds" : [ "2", "5", "6" ]
}

피드 삭제 🔐

성공

HTTP request
DELETE /api/feeds/ee057da06571b1078b989ee2 HTTP/1.1
Content-Type: application/json
Host: localhost:36185

좋아요 등록 🔐

성공

HTTP request
POST /api/feeds/ee05de346571b1078b98a5d2/likes HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 43

{
  "feedId" : "ee05de346571b1078b98a5d2"
}
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:41 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 167

{
  "id" : "ee05de526571b1078b98a5d6",
  "feedId" : "ee05de346571b1078b98a5d2",
  "memberId" : "ee05ddac6571b1078b98a5ca",
  "isLiked" : true,
  "feedHeartCount" : 1
}

이미 좋아요 된 피드일 때

HTTP request
POST /api/feeds/ee05dd076571b1078b98a5c4/likes HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:41 GMT
Connection: close
Content-Length: 97

{
  "message" : "이미 좋아요 누른 피드입니다.",
  "code" : "i014",
  "errors" : { }
}

좋아요 취소 🔐

성공

HTTP request
DELETE /api/feeds/ee05dc216571b1078b98a5b6/likes HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:41 GMT
Keep-Alive: timeout=60
Connection: keep-alive

좋아요 된 피드가 없을 때

HTTP request
DELETE /api/feeds/ee05df176571b1078b98a5e0/likes HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 43

{
  "feedId" : "ee05df176571b1078b98a5e0"
}
HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:41 GMT
Connection: close
Content-Length: 111

{
  "message" : "좋아요 기록이 없어 취소할 수 없습니다.",
  "code" : "i016",
  "errors" : { }
}

스토어 무드 조회

성공

HTTP request
GET /api/feeds/store-moods HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:19 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 262

[ {
  "id" : "1",
  "name" : "가족과 함께"
}, {
  "id" : "2",
  "name" : "혼밥"
}, {
  "id" : "3",
  "name" : "감성"
}, {
  "id" : "4",
  "name" : "데이트"
}, {
  "id" : "5",
  "name" : "루프탑"
}, {
  "id" : "6",
  "name" : "특별한 테마"
} ]

인증/인가

로그인

성공

HTTP request
POST /api/auth/login HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 61

{
  "email" : "puban@puban.com",
  "password" : "puban123!"
}
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 458

{
  "accessToken" : "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6ImVlMDU3OGE4NjU3MWIxMDc4Yjk4OWVjOCIsImVtYWlsIjoicHViYW5AcHViYW4uY29tIiwiaXNzIjoiZm9vZHltb29keS5zdG9yZSIsImlhdCI6MTczNDg2NTE1NiwiZXhwIjoxNzM0ODY4NzU2fQ.2Wwxpk1THIvyrb4jyft53b33rOm6VjK-5hN1-6MzTOQ",
  "refreshToken" : "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6ImVlMDU3OGE4NjU3MWIxMDc4Yjk4OWVjOCIsImlzcyI6ImZvb2R5bW9vZHkuc3RvcmUiLCJpYXQiOjE3MzQ4NjUxNTYsImV4cCI6MTczNzQ1NzE1Nn0.rJRJ-nfhFj9PcrsSCEC96dWkspqVkXaUhHbSzrTkPhw"
}

OAuth 로그인

성공 (현재 google 가능)

HTTP request
GET /api/auth/oauth/google?code=authorizationCode HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:15 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 458

{
  "accessToken" : "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6ImVlMDU3NmE0NjU3MWIxMDc4Yjk4OWViZiIsImVtYWlsIjoib2F1dGhAb2F1dGguY29tIiwiaXNzIjoiZm9vZHltb29keS5zdG9yZSIsImlhdCI6MTczNDg2NTE1NSwiZXhwIjoxNzM0ODY4NzU1fQ.kjjur8MV71euriMjYQLlunN6oE4E_-vfONf7ypyDp84",
  "refreshToken" : "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6ImVlMDU3NmE0NjU3MWIxMDc4Yjk4OWViZiIsImlzcyI6ImZvb2R5bW9vZHkuc3RvcmUiLCJpYXQiOjE3MzQ4NjUxNTUsImV4cCI6MTczNzQ1NzE1NX0.dZ8fyzLAVvTWXk-EdhK6XUVsDB0KH7YrTsKcMxxiN-U"
}

가입되지 않은 이메일일 때

HTTP response
HTTP/1.1 404 Not Found
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 92

{
  "message" : "존재하지 않는 회원입니다",
  "code" : "m001",
  "errors" : { }
}

비밀번호가 틀렸을 때

HTTP response
HTTP/1.1 401 Unauthorized
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 118

{
  "message" : "사용자 정보와 비밀번호가 일치하지 않습니다",
  "code" : "a005",
  "errors" : { }
}

토큰 재발급 🔐

성공

HTTP request
POST /api/auth/token HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 213

{
  "refreshToken" : "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6ImVlMDU2Zjc0NjU3MWIxMDc4Yjk4OWViNSIsImlzcyI6ImZvb2R5bW9vZHkuc3RvcmUiLCJpYXQiOjE3MzQ4NjUxNTQsImV4cCI6MTczNzQ1NzE1NH0.p_TLT27ZIM0dEqolhHDV4LSVtlwzwSkuKhqmOonJ9pw"
}
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:15 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 458

{
  "accessToken" : "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6ImVlMDU2Zjc0NjU3MWIxMDc4Yjk4OWViNSIsImVtYWlsIjoicHViYW5AcHViYW4uY29tIiwiaXNzIjoiZm9vZHltb29keS5zdG9yZSIsImlhdCI6MTczNDg2NTE1NSwiZXhwIjoxNzM0ODY4NzU1fQ._Pvrug6Cev9UZ8E8VS4UoBlEKLs_IREztLbePJsdk3o",
  "refreshToken" : "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6ImVlMDU2Zjc0NjU3MWIxMDc4Yjk4OWViNSIsImlzcyI6ImZvb2R5bW9vZHkuc3RvcmUiLCJpYXQiOjE3MzQ4NjUxNTUsImV4cCI6MTczNzQ1NzE1NX0.a_3RHqXhMR62gfO4KoIStC_Jcs2Ea-dDdLNY_6zIopQ"
}

유효하지 않은 리프레시 토큰일 때

HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:15 GMT
Connection: close
Content-Length: 92

{
  "message" : "토큰이 유효하지 않습니다",
  "code" : "a002",
  "errors" : { }
}

로그아웃 🔐

성공

HTTP request
POST /api/auth/logout HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:13 GMT
Keep-Alive: timeout=60
Connection: keep-alive

피드 댓글

피드 댓글 등록 🔐

HTTP request

POST /api/feed/ee05d7156571b1078b98a555/comments HTTP/1.1
Accept: application/json
Content-Type: application/json
Host: localhost:36185
Content-Length: 33

{
  "content" : "댓글 내용"
}

HTTP response

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:39 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 39

{
  "id" : "ee05d7326571b1078b98a559"
}

예외 케이스

케이스

응답코드

응답메시지

에러 코드

설명

바디가 없을 때

400

입력값이 올바르지 않습니다.

g001

요청 바디가 존재하지 않습니다.

댓글이 없을 때

400

입력값이 올바르지 않습니다.

g001

댓글이 공백일 수 없습니다;널이어서는 안됩니다.

댓글이 비여 있을 때

400

입력값이 올바르지 않습니다.

g001

댓글이 공백일 수 없습니다;널이어서는 안됩니다.

댓글이 공백 일 때

400

입력값이 올바르지 않습니다.

g001

댓글이 공백일 수 없습니다;널이어서는 안됩니다.

댓글이 200자를 넘을 때

400

댓글은 200자 이하여야 합니다.

g001

댓글은 200자를 넘을 수 없습니다.

피드가 존재하지 않을 때

400

피드가 존재하지 않습니다.

g001

유호한 피드 아이디이여야 합니다.

피드 댓글 수정 🔐

HTTP request

PUT /api/feed/ee05d2776571b1078b98a501/comments/ee05d2916571b1078b98a505 HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 36

{
  "content" : "수정된 댓글"
}

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:38 GMT
Keep-Alive: timeout=60
Connection: keep-alive

예외 케이스

케이스

응답코드

응답메시지

에러 코드

설명

바디가 없을 때

400

입력값이 올바르지 않습니다.

g001

요청 바디가 유효해야 합니다.

댓글이 비여 있을 때

400

입력값이 올바르지 않습니다.

g001

댓글이 공백일 수 없습니다.

댓글이 공백 일 때

400

입력값이 올바르지 않습니다.

g001

댓글이 공백일 수 없습니다.

댓글이 200자를 넘을 때

400

댓글은 200자 이하여야 합니다.

g001

댓글은 200자를 넘을 수 없습니다.

댓글이 존재하지 않을 때

400

댓글이 존재하지 않습니다.

c007

유효한 댓글 아이디이여야 합니다.

댓글이 이미 삭제되었을 때

400

삭제된 댓글입니다.

c008

댓글이 이미 삭제되었습니다.

피드 댓글 삭제 🔐

HTTP request

DELETE /api/feed/ee05ce2b6571b1078b98a4b6/comments/ee05ce446571b1078b98a4ba HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:37 GMT
Keep-Alive: timeout=60
Connection: keep-alive

예외 케이스

케이스

응답코드

응답메시지

에러 코드

설명

댓글이 존재하지 않을 때

400

댓글이 존재하지 않는다.

c007

유효한 댓글 아이디이여야 합니다.

댓글이 이미 삭제되었을 때

400

삭제된 댓글입니다.

c008

댓글이 이미 삭제되었습니다.

피드별 댓글 조회 ❤️

HTTP request

GET /api/feed/ee05c8e36571b1078b98a417/comments?size=5&page=1 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:36 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 2697

{
  "content" : [ {
    "id" : "ee05c9f56571b1078b98a445",
    "content" : "댓글 내용",
    "member" : {
      "id" : "ee05c8616571b1078b98a40f",
      "nickname" : "아티",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "hasReply" : false,
    "replyCount" : 0,
    "likeCount" : 0,
    "liked" : false,
    "createdAt" : "2024-12-22T10:59:37.077742",
    "updatedAt" : "2024-12-22T10:59:37.077742"
  }, {
    "id" : "ee05c9e36571b1078b98a442",
    "content" : "댓글 내용",
    "member" : {
      "id" : "ee05c8616571b1078b98a40f",
      "nickname" : "아티",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "hasReply" : false,
    "replyCount" : 0,
    "likeCount" : 0,
    "liked" : false,
    "createdAt" : "2024-12-22T10:59:37.059696",
    "updatedAt" : "2024-12-22T10:59:37.059696"
  }, {
    "id" : "ee05c9cd6571b1078b98a43f",
    "content" : "댓글 내용",
    "member" : {
      "id" : "ee05c8616571b1078b98a40f",
      "nickname" : "아티",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "hasReply" : false,
    "replyCount" : 0,
    "likeCount" : 0,
    "liked" : false,
    "createdAt" : "2024-12-22T10:59:37.037045",
    "updatedAt" : "2024-12-22T10:59:37.037045"
  }, {
    "id" : "ee05c9bb6571b1078b98a43c",
    "content" : "댓글 내용",
    "member" : {
      "id" : "ee05c8616571b1078b98a40f",
      "nickname" : "아티",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "hasReply" : false,
    "replyCount" : 0,
    "likeCount" : 0,
    "liked" : false,
    "createdAt" : "2024-12-22T10:59:37.019847",
    "updatedAt" : "2024-12-22T10:59:37.019847"
  }, {
    "id" : "ee05c9ac6571b1078b98a439",
    "content" : "댓글 내용",
    "member" : {
      "id" : "ee05c8616571b1078b98a40f",
      "nickname" : "아티",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "hasReply" : false,
    "replyCount" : 0,
    "likeCount" : 0,
    "liked" : false,
    "createdAt" : "2024-12-22T10:59:37.004419",
    "updatedAt" : "2024-12-22T10:59:37.004419"
  } ],
  "pageable" : {
    "sort" : {
      "sorted" : true,
      "unsorted" : false,
      "empty" : false
    },
    "pageNumber" : 1,
    "pageSize" : 5,
    "offset" : 5,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : true,
    "unsorted" : false,
    "empty" : false
  },
  "first" : false,
  "last" : false,
  "number" : 1,
  "numberOfElements" : 5,
  "size" : 5,
  "empty" : false
}

예외 케이스

케이스

응답코드

응답메시지

에러 코드

설명

피드가 존재하지 않을 때

400

피드가 존재하지 않습니다.

c004

유효한 피드 아이디이여야 합니다.

피드 댓글 좋아요 등록 🔐

HTTP request

POST /api/feed/ee05da6a6571b1078b98a594/comments/ee05da8b6571b1078b98a598/likes HTTP/1.1
Content-Type: application/json
Host: localhost:36185

HTTP response

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:40 GMT
Keep-Alive: timeout=60
Connection: keep-alive

피드 댓글 좋아요 취소 🔐

HTTP request

DELETE /api/feed/ee05db3d6571b1078b98a5a5/comments/ee05db5c6571b1078b98a5a9/likes HTTP/1.1
Content-Type: application/json
Host: localhost:36185

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:41 GMT
Keep-Alive: timeout=60
Connection: keep-alive

피드 대댓글

피드 대댓글 달기 🔐

HTTP request

POST /api/feed/ee05e1c86571b1078b98a610/comments/ee05e1e56571b1078b98a614 HTTP/1.1
Accept: application/json
Content-Type: application/json
Host: localhost:36185
Content-Length: 33

{
  "content" : "댓글 내용"
}

HTTP response

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:42 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 39

{
  "id" : "ee05e1fe6571b1078b98a617"
}

피드 대댓글 조회 ❤️

HTTP request

GET /api/feed/ee05e3dc6571b1078b98a63c/comments/ee05e3f06571b1078b98a640/replies?page=0&size=10 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:43 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1651

{
  "content" : [ {
    "id" : "ee05e4206571b1078b98a649",
    "content" : "댓글 내용",
    "member" : {
      "id" : "ee05e3736571b1078b98a634",
      "nickname" : "아티",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "likeCount" : 0,
    "liked" : false,
    "createdAt" : "2024-12-22T10:59:43.77659",
    "updatedAt" : "2024-12-22T10:59:43.77659"
  }, {
    "id" : "ee05e4116571b1078b98a646",
    "content" : "댓글 내용",
    "member" : {
      "id" : "ee05e39c6571b1078b98a636",
      "nickname" : "푸반",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "likeCount" : 0,
    "liked" : false,
    "createdAt" : "2024-12-22T10:59:43.761544",
    "updatedAt" : "2024-12-22T10:59:43.761544"
  }, {
    "id" : "ee05e4026571b1078b98a643",
    "content" : "댓글 내용",
    "member" : {
      "id" : "ee05e3736571b1078b98a634",
      "nickname" : "아티",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "likeCount" : 0,
    "liked" : false,
    "createdAt" : "2024-12-22T10:59:43.746629",
    "updatedAt" : "2024-12-22T10:59:43.746629"
  } ],
  "pageable" : {
    "sort" : {
      "sorted" : true,
      "unsorted" : false,
      "empty" : false
    },
    "pageNumber" : 0,
    "pageSize" : 10,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : true,
    "unsorted" : false,
    "empty" : false
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 3,
  "size" : 10,
  "empty" : false
}

피드 대댓글에 좋아요 등록 🔐

HTTP request

POST /api/feed/ee05e5ca6571b1078b98a668/comments/ee05e5e36571b1078b98a66c/replies/ee05e5f76571b1078b98a66f/likes HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=ISO-8859-1
Host: localhost:36185

HTTP response

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:43 GMT
Keep-Alive: timeout=60
Connection: keep-alive

피드 대댓글에 좋아요 취소 🔐

HTTP request

DELETE /api/feed/ee05e4e06571b1078b98a654/comments/ee05e4f46571b1078b98a658/replies/ee05e5076571b1078b98a65b/likes HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:43 GMT
Keep-Alive: timeout=60
Connection: keep-alive

피드 대댓글 수정 🔐

HTTP request

PUT /api/feed/ee05dfe56571b1078b98a5ec/comments/ee05dffa6571b1078b98a5f0/replies/ee05e00f6571b1078b98a5f3 HTTP/1.1
Accept: application/json
Content-Type: application/json
Host: localhost:36185
Content-Length: 43

{
  "content" : "수정된 댓글 내용"
}

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:42 GMT
Keep-Alive: timeout=60
Connection: keep-alive

피드 대댓글 삭제 🔐

HTTP request

DELETE /api/feed/ee05e0d56571b1078b98a5fe/comments/ee05e0ed6571b1078b98a602/replies/ee05e1016571b1078b98a605 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:42 GMT
Keep-Alive: timeout=60
Connection: keep-alive

회원

회원 가입

성공

HTTP request
POST /api/members HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 139

{
  "email" : "bono@bono.com",
  "tasteMoodId" : "1",
  "nickname" : "보노",
  "password" : "bono123!",
  "repeatPassword" : "bono123!"
}
HTTP response
HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:52 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 39

{
  "id" : "ee0607ef6571b1078b98a846"
}

입력값이 잘못됐을 때

HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:52 GMT
Connection: close
Content-Length: 346

{
  "message" : "입력값이 올바르지 않습니다.",
  "code" : "g001",
  "errors" : {
    "password" : "비밀번호는 8글자 이상 16글자 이하의 영문자, 특수문자로 이뤄져야 합니다",
    "nickname" : "닉네임은 공백일 수 없습니다",
    "email" : "올바른 형식의 이메일을 입력해주세요"
  }
}

이미 가입된 이메일일 때

HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:52 GMT
Connection: close
Content-Length: 92

{
  "message" : "이미 가입된 이메일입니다",
  "code" : "m002",
  "errors" : { }
}

이미 가입된 닉네임일 때

HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:52 GMT
Connection: close
Content-Length: 95

{
  "message" : "이미 존재하는 닉네임입니다",
  "code" : "m003",
  "errors" : { }
}

재입력한 비밀번호가 다를 때

HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:52 GMT
Connection: close
Content-Length: 177

{
  "message" : "입력값이 올바르지 않습니다.",
  "code" : "g001",
  "errors" : {
    "signupRequest" : "재입력한 비밀번호가 일치하지 않습니다"
  }
}

회원 프로필 조회

성공 - 비로그인

HTTP request
GET /api/members/ee0606016571b1078b98a822 HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:51 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 429

{
  "id" : "ee0606016571b1078b98a822",
  "profileImage" : {
    "id" : "member-profile-default",
    "url" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
  },
  "nickname" : "푸반",
  "email" : "puban@puban.com",
  "tasteMood" : {
    "id" : "1",
    "name" : "베지테리언"
  },
  "followingCount" : 0,
  "followerCount" : 1,
  "following" : false,
  "followed" : false,
  "feedCount" : 3
}

성공 - 로그인

HTTP request
GET /api/members/ee0605766571b1078b98a81c HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:51 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 425

{
  "id" : "ee0605766571b1078b98a81c",
  "profileImage" : {
    "id" : "member-profile-default",
    "url" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
  },
  "nickname" : "보노",
  "email" : "bono@bono.com",
  "tasteMood" : {
    "id" : "1",
    "name" : "베지테리언"
  },
  "followingCount" : 1,
  "followerCount" : 1,
  "following" : true,
  "followed" : true,
  "feedCount" : 0
}

존재하지 않는 회원 id일 때

HTTP response
HTTP/1.1 404 Not Found
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:52 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 92

{
  "message" : "존재하지 않는 회원입니다",
  "code" : "m001",
  "errors" : { }
}

회원별 피드 조회

성공

HTTP request
GET /api/members/ee0604a26571b1078b98a808/feeds?page=0&size=10 HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:51 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 596

{
  "content" : [ {
    "id" : "ee0604fb6571b1078b98a814",
    "imageUrl" : "https://s3Url/key"
  }, {
    "id" : "ee0604e96571b1078b98a80e",
    "imageUrl" : "https://s3Url/key"
  } ],
  "pageable" : {
    "sort" : {
      "sorted" : false,
      "unsorted" : true,
      "empty" : true
    },
    "pageNumber" : 0,
    "pageSize" : 10,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : false,
    "unsorted" : true,
    "empty" : true
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 2,
  "size" : 10,
  "empty" : false
}

성공 - 해당 회원이 작성한 피드가 없을 때

HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:51 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 430

{
  "content" : [ ],
  "pageable" : {
    "sort" : {
      "sorted" : false,
      "unsorted" : true,
      "empty" : true
    },
    "pageNumber" : 0,
    "pageSize" : 10,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : false,
    "unsorted" : true,
    "empty" : true
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 0,
  "size" : 10,
  "empty" : true
}

회원별 컬렉션 조회 ❤️

성공

HTTP request
GET /api/members/ee0601246571b1078b98a7be/collections?page=0&size=5 HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:50 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 3181

{
  "count" : 6,
  "author" : {
    "id" : "ee0601246571b1078b98a7be",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
  },
  "collections" : {
    "content" : [ {
      "id" : "ee06028e6571b1078b98a7e8",
      "title" : "테스트 컬렉션",
      "thumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
      "feedCount" : 1,
      "likeCount" : 0,
      "commentCount" : 0,
      "liked" : true,
      "createdAt" : "2024-12-22T10:59:51.566601",
      "updatedAt" : "2024-12-22T10:59:51.589186",
      "moods" : [ {
        "id" : "ee0601bb6571b1078b98a7d6",
        "name" : "행복"
      } ]
    }, {
      "id" : "ee06026f6571b1078b98a7e5",
      "title" : "테스트 컬렉션",
      "thumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
      "feedCount" : 1,
      "likeCount" : 0,
      "commentCount" : 0,
      "liked" : false,
      "createdAt" : "2024-12-22T10:59:51.535965",
      "updatedAt" : "2024-12-22T10:59:51.555886",
      "moods" : [ {
        "id" : "ee0601bb6571b1078b98a7d6",
        "name" : "행복"
      } ]
    }, {
      "id" : "ee06024f6571b1078b98a7e2",
      "title" : "테스트 컬렉션",
      "thumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
      "feedCount" : 1,
      "likeCount" : 0,
      "commentCount" : 0,
      "liked" : false,
      "createdAt" : "2024-12-22T10:59:51.504004",
      "updatedAt" : "2024-12-22T10:59:51.525096",
      "moods" : [ {
        "id" : "ee0601bb6571b1078b98a7d6",
        "name" : "행복"
      } ]
    }, {
      "id" : "ee06022a6571b1078b98a7df",
      "title" : "테스트 컬렉션",
      "thumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
      "feedCount" : 3,
      "likeCount" : 0,
      "commentCount" : 0,
      "liked" : false,
      "createdAt" : "2024-12-22T10:59:51.466028",
      "updatedAt" : "2024-12-22T10:59:51.49299",
      "moods" : [ {
        "id" : "ee0601bb6571b1078b98a7d6",
        "name" : "행복"
      }, {
        "id" : "ee0601c76571b1078b98a7d7",
        "name" : "행복"
      }, {
        "id" : "ee0601d76571b1078b98a7d8",
        "name" : "행복"
      } ]
    }, {
      "id" : "ee06020a6571b1078b98a7dc",
      "title" : "테스트 컬렉션",
      "thumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
      "feedCount" : 2,
      "likeCount" : 0,
      "commentCount" : 0,
      "liked" : false,
      "createdAt" : "2024-12-22T10:59:51.434707",
      "updatedAt" : "2024-12-22T10:59:51.455506",
      "moods" : [ ]
    } ],
    "pageable" : {
      "sort" : {
        "sorted" : false,
        "unsorted" : true,
        "empty" : true
      },
      "pageNumber" : 0,
      "pageSize" : 5,
      "offset" : 0,
      "paged" : true,
      "unpaged" : false
    },
    "sort" : {
      "sorted" : false,
      "unsorted" : true,
      "empty" : true
    },
    "first" : true,
    "last" : false,
    "number" : 0,
    "numberOfElements" : 5,
    "size" : 5,
    "empty" : false
  }
}

회원별 전체 컬렉션 제목 조회 🔐

성공

HTTP request
GET /api/members/me/collections/titles HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:50 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 584

[ {
  "id" : "ee05ffd76571b1078b98a7b3",
  "title" : "테스트 컬렉션",
  "private" : false
}, {
  "id" : "ee05ffb96571b1078b98a7b0",
  "title" : "테스트 컬렉션",
  "private" : false
}, {
  "id" : "ee05ff976571b1078b98a7ad",
  "title" : "테스트 컬렉션",
  "private" : false
}, {
  "id" : "ee05ff766571b1078b98a7aa",
  "title" : "테스트 컬렉션",
  "private" : false
}, {
  "id" : "ee05ff556571b1078b98a7a7",
  "title" : "테스트 컬렉션",
  "private" : false
}, {
  "id" : "ee05ff366571b1078b98a7a4",
  "title" : "테스트 컬렉션",
  "private" : false
} ]

회원별 전체 컬렉션 + 피드 포함 여부 조회 🔐

성공

HTTP request
GET /api/members/me/collections/with-feed-inclusion-status/ee05fc8d6571b1078b98a764 HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:49 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 714

[ {
  "id" : "ee05fdb56571b1078b98a783",
  "title" : "테스트 컬렉션",
  "containsFeed" : false
}, {
  "id" : "ee05fd946571b1078b98a780",
  "title" : "테스트 컬렉션",
  "containsFeed" : false
}, {
  "id" : "ee05fd756571b1078b98a77d",
  "title" : "테스트 컬렉션",
  "containsFeed" : false
}, {
  "id" : "ee05fd566571b1078b98a77a",
  "title" : "테스트 컬렉션",
  "containsFeed" : false
}, {
  "id" : "ee05fd346571b1078b98a777",
  "title" : "테스트 컬렉션",
  "containsFeed" : true
}, {
  "id" : "ee05fd146571b1078b98a774",
  "title" : "테스트 컬렉션",
  "containsFeed" : true
}, {
  "id" : "ee05fcf86571b1078b98a771",
  "title" : "테스트 컬렉션",
  "containsFeed" : false
} ]

테이스트 무드 조회

성공

HTTP request
GET /api/members/taste-moods HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:49 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 259

[ {
  "id" : "1",
  "name" : "베지테리언"
}, {
  "id" : "2",
  "name" : "베지테리언2"
}, {
  "id" : "3",
  "name" : "무드1"
}, {
  "id" : "4",
  "name" : "무드2"
}, {
  "id" : "5",
  "name" : "무드3"
}, {
  "id" : "6",
  "name" : "무드4"
} ]

회원 닉네임 중복 여부 조회

성공

HTTP request
GET /api/members/duplication-check?nickname=%ED%91%B8%EB%B0%98 HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:49 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 24

{
  "duplicate" : true
}

비밀번호 수정 🔐

성공

HTTP request
PUT /api/members/me/password HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 97

{
  "oldPassword" : "puban123!",
  "repeatPassword" : "atiati123!",
  "password" : "atiati123!"
}
HTTP response
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:48 GMT
Keep-Alive: timeout=60
Connection: keep-alive

비밀번호 인증 실패할 때

HTTP response
HTTP/1.1 401 Unauthorized
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:48 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 118

{
  "message" : "사용자 정보와 비밀번호가 일치하지 않습니다",
  "code" : "a005",
  "errors" : { }
}

비밀번호가 형식에 맞지 않을 때

HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:48 GMT
Connection: close
Content-Length: 217

{
  "message" : "입력값이 올바르지 않습니다.",
  "code" : "g001",
  "errors" : {
    "password" : "비밀번호는 8글자 이상 16글자 이하의 영문자, 특수문자로 이뤄져야 합니다"
  }
}

회원 정보 수정 🔐

프로필 이미지, 닉네임, 테이스트 무드 수정 가능하고, 변경되지 않은 데이터는 null로 주셔도 됩니다

성공

HTTP request
PATCH /api/members/me HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 108

{
  "nickname" : "수정된보노",
  "tasteMoodId" : "3",
  "profileImageId" : "ee05f8976571b1078b98a735"
}
HTTP response
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:48 GMT
Keep-Alive: timeout=60
Connection: keep-alive

성공 - 프로필 이미지만 수정

HTTP request
PATCH /api/members/me HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 51

{
  "profileImageId" : "ee05f62b6571b1078b98a71c"
}
HTTP response
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:47 GMT
Keep-Alive: timeout=60
Connection: keep-alive

중복된 닉네임일 때

HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:48 GMT
Connection: close
Content-Length: 95

{
  "message" : "이미 존재하는 닉네임입니다",
  "code" : "m003",
  "errors" : { }
}

존재하지 않는 이미지 id일 때

HTTP response
HTTP/1.1 404 Not Found
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:48 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 108

{
  "message" : "해당 id의 이미지가 존재하지 않습니다",
  "code" : "i001",
  "errors" : { }
}

존재하지 않는 테이스트 무드 id일 때

HTTP response
HTTP/1.1 404 Not Found
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:47 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 92

{
  "message" : "존재하지 않는 무드입니다",
  "code" : "o002",
  "errors" : { }
}

회원 탈퇴 🔐

성공

HTTP request
DELETE /api/members/me HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:47 GMT
Keep-Alive: timeout=60
Connection: keep-alive

팔로우 🔐

성공

HTTP request
POST /api/members/ee05f3966571b1078b98a6f5/followers HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:47 GMT
Keep-Alive: timeout=60
Connection: keep-alive

액세스 토큰이 유효하지 않을 때

HTTP response
HTTP/1.1 401 Unauthorized
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:47 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 92

{
  "message" : "토큰이 유효하지 않습니다",
  "code" : "a001",
  "errors" : { }
}

존재하지 않는 회원 id일 때

HTTP response
HTTP/1.1 404 Not Found
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:47 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 92

{
  "message" : "존재하지 않는 회원입니다",
  "code" : "m001",
  "errors" : { }
}

팔로우 대상이 자기 자신일 때

HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:46 GMT
Connection: close
Content-Length: 96

{
  "message" : "팔로우할 수 없는 회원입니다",
  "code" : "g001",
  "errors" : { }
}

언팔로우 🔐

성공

HTTP request
DELETE /api/members/ee05f1386571b1078b98a6e0/followers HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:46 GMT
Keep-Alive: timeout=60
Connection: keep-alive

액세스 토큰이 유효하지 않을 때

HTTP response
HTTP/1.1 401 Unauthorized
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:46 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 92

{
  "message" : "토큰이 유효하지 않습니다",
  "code" : "a001",
  "errors" : { }
}

존재하지 않는 회원 id일 때

HTTP response
HTTP/1.1 404 Not Found
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:46 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 92

{
  "message" : "존재하지 않는 회원입니다",
  "code" : "m001",
  "errors" : { }
}

언팔로우 대상이 자기 자신일 떄

HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:46 GMT
Connection: close
Content-Length: 99

{
  "message" : "언팔로우할 수 없는 회원입니다",
  "code" : "g001",
  "errors" : { }
}

팔로잉 목록 조회

성공 - 비로그인

HTTP request
GET /api/members/ee05ef406571b1078b98a6c8/followings HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:46 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1329

{
  "content" : [ {
    "id" : "ee05ef906571b1078b98a6ce",
    "nickname" : "보노",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "following" : false,
    "followed" : false
  }, {
    "id" : "ee05ef7b6571b1078b98a6cc",
    "nickname" : "설리",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "following" : false,
    "followed" : false
  }, {
    "id" : "ee05ef666571b1078b98a6ca",
    "nickname" : "알버트",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "following" : false,
    "followed" : false
  }, {
    "id" : "ee05ef1c6571b1078b98a6c6",
    "nickname" : "아티",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "following" : false,
    "followed" : false
  } ],
  "pageable" : {
    "sort" : {
      "sorted" : false,
      "unsorted" : true,
      "empty" : true
    },
    "pageNumber" : 0,
    "pageSize" : 10,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : false,
    "unsorted" : true,
    "empty" : true
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 4,
  "size" : 10,
  "empty" : false
}

성공 - 팔로우 중인 회원이 없을 때

HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:45 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 430

{
  "content" : [ ],
  "pageable" : {
    "sort" : {
      "sorted" : false,
      "unsorted" : true,
      "empty" : true
    },
    "pageNumber" : 0,
    "pageSize" : 10,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : false,
    "unsorted" : true,
    "empty" : true
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 0,
  "size" : 10,
  "empty" : true
}

성공 - 로그인

HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:45 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1102

{
  "content" : [ {
    "id" : "ee05ee246571b1078b98a6ba",
    "nickname" : "푸반",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "following" : false,
    "followed" : false
  }, {
    "id" : "ee05ee486571b1078b98a6bc",
    "nickname" : "알버트",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "following" : true,
    "followed" : false
  }, {
    "id" : "ee05ee016571b1078b98a6b8",
    "nickname" : "아티",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "following" : true,
    "followed" : true
  } ],
  "pageable" : {
    "sort" : {
      "sorted" : false,
      "unsorted" : true,
      "empty" : true
    },
    "pageNumber" : 0,
    "pageSize" : 10,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : false,
    "unsorted" : true,
    "empty" : true
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 3,
  "size" : 10,
  "empty" : false
}

팔로워 목록 조회

성공 - 비로그인

HTTP request
GET /api/members/ee05eb176571b1078b98a696/followers HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:45 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1329

{
  "content" : [ {
    "id" : "ee05eb6a6571b1078b98a69c",
    "nickname" : "보노",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "following" : false,
    "followed" : false
  }, {
    "id" : "ee05eb5d6571b1078b98a69a",
    "nickname" : "설리",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "following" : false,
    "followed" : false
  }, {
    "id" : "ee05eb4f6571b1078b98a698",
    "nickname" : "알버트",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "following" : false,
    "followed" : false
  }, {
    "id" : "ee05eaf16571b1078b98a694",
    "nickname" : "아티",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "following" : false,
    "followed" : false
  } ],
  "pageable" : {
    "sort" : {
      "sorted" : false,
      "unsorted" : true,
      "empty" : true
    },
    "pageNumber" : 0,
    "pageSize" : 10,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : false,
    "unsorted" : true,
    "empty" : true
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 4,
  "size" : 10,
  "empty" : false
}

성공 - 팔로워가 없을 때

HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:45 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 430

{
  "content" : [ ],
  "pageable" : {
    "sort" : {
      "sorted" : false,
      "unsorted" : true,
      "empty" : true
    },
    "pageNumber" : 0,
    "pageSize" : 10,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : false,
    "unsorted" : true,
    "empty" : true
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 0,
  "size" : 10,
  "empty" : true
}

성공 - 로그인

HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:45 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1102

{
  "content" : [ {
    "id" : "ee05ee246571b1078b98a6ba",
    "nickname" : "푸반",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "following" : false,
    "followed" : false
  }, {
    "id" : "ee05ee486571b1078b98a6bc",
    "nickname" : "알버트",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "following" : true,
    "followed" : false
  }, {
    "id" : "ee05ee016571b1078b98a6b8",
    "nickname" : "아티",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "following" : true,
    "followed" : true
  } ],
  "pageable" : {
    "sort" : {
      "sorted" : false,
      "unsorted" : true,
      "empty" : true
    },
    "pageNumber" : 0,
    "pageSize" : 10,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : false,
    "unsorted" : true,
    "empty" : true
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 3,
  "size" : 10,
  "empty" : false
}

알림

알림 전체 조회 🔐

HTTP request

GET /api/notifications?size=100&page=0 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:53 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 11737

{
  "content" : [ {
    "notificationId" : "ee060b8e6571b1078b98a894",
    "sender" : {
      "id" : "ee0609ca6571b1078b98a857",
      "nickname" : "푸반",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedCollectionReplyLikeNotificationDetails",
      "feedCollectionId" : "ee060b0e6571b1078b98a87f",
      "feedCollectionThumbnailUrl" : null,
      "feedCollectionCommentId" : "ee060b466571b1078b98a888",
      "feedCollectionReplyId" : "ee060b756571b1078b98a890",
      "feedCollectionReplyContent" : "대댓글입니다."
    },
    "type" : "FEED_COLLECTION_COMMENT_REPLY_LIKED_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.862205",
    "updatedAt" : "2024-12-22T10:59:53.862205",
    "read" : false
  }, {
    "notificationId" : "ee060b7e6571b1078b98a892",
    "sender" : {
      "id" : "ee0609a76571b1078b98a855",
      "nickname" : "아티",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedCollectionReplyNotificationDetails",
      "feedCollectionId" : "ee060b0e6571b1078b98a87f",
      "feedCollectionThumbnailUrl" : null,
      "feedCollectionCommentId" : "ee060b466571b1078b98a888",
      "feedCollectionReplyId" : "ee060b756571b1078b98a890",
      "feedCollectionReplyContent" : "대댓글입니다."
    },
    "type" : "FEED_COLLECTION_COMMENT_REPLY_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.845488",
    "updatedAt" : "2024-12-22T10:59:53.845488",
    "read" : false
  }, {
    "notificationId" : "ee060b6f6571b1078b98a88f",
    "sender" : {
      "id" : "ee0609a76571b1078b98a855",
      "nickname" : "아티",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedCollectionReplyNotificationDetails",
      "feedCollectionId" : "ee060b0e6571b1078b98a87f",
      "feedCollectionThumbnailUrl" : null,
      "feedCollectionCommentId" : "ee060b466571b1078b98a888",
      "feedCollectionReplyId" : "ee060b656571b1078b98a88d",
      "feedCollectionReplyContent" : "대댓글입니다."
    },
    "type" : "FEED_COLLECTION_COMMENT_REPLY_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.829868",
    "updatedAt" : "2024-12-22T10:59:53.829868",
    "read" : false
  }, {
    "notificationId" : "ee060b636571b1078b98a88c",
    "sender" : {
      "id" : "ee0609ca6571b1078b98a857",
      "nickname" : "푸반",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedCollectionCommentLikeNotificationDetails",
      "feedCollectionCommentId" : "ee060b466571b1078b98a888",
      "feedCollectionCommentContent" : "댓글 내용",
      "feedCollectionId" : "ee060b0e6571b1078b98a87f",
      "feedCollectionThumbnailUrl" : null
    },
    "type" : "FEED_COLLECTION_COMMENT_LIKED_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.818399",
    "updatedAt" : "2024-12-22T10:59:53.818399",
    "read" : false
  }, {
    "notificationId" : "ee060b506571b1078b98a88a",
    "sender" : {
      "id" : "ee0609a76571b1078b98a855",
      "nickname" : "아티",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedCollectionCommentNotificationDetails",
      "feedCollectionId" : "ee060b0e6571b1078b98a87f",
      "feedCollectionThumbnailUrl" : null,
      "feedCollectionCommentId" : "ee060b466571b1078b98a888",
      "feedCollectionCommentContent" : "댓글 내용"
    },
    "type" : "FEED_COLLECTION_COMMENT_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.79843",
    "updatedAt" : "2024-12-22T10:59:53.79843",
    "read" : false
  }, {
    "notificationId" : "ee060b3e6571b1078b98a887",
    "sender" : {
      "id" : "ee0609ca6571b1078b98a857",
      "nickname" : "푸반",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedCollectionCommentNotificationDetails",
      "feedCollectionId" : "ee060b0e6571b1078b98a87f",
      "feedCollectionThumbnailUrl" : null,
      "feedCollectionCommentId" : "ee060b356571b1078b98a885",
      "feedCollectionCommentContent" : "댓글 내용"
    },
    "type" : "FEED_COLLECTION_COMMENT_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.781477",
    "updatedAt" : "2024-12-22T10:59:53.781477",
    "read" : false
  }, {
    "notificationId" : "ee060b296571b1078b98a884",
    "sender" : {
      "id" : "ee0609ca6571b1078b98a857",
      "nickname" : "푸반",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedCollectionLikeNotificationDetails",
      "feedCollectionId" : "ee060b0e6571b1078b98a87f",
      "feedCollectionThumbnailUrl" : null
    },
    "type" : "FEED_COLLECTION_LIKED_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.761606",
    "updatedAt" : "2024-12-22T10:59:53.761606",
    "read" : false
  }, {
    "notificationId" : "ee060b046571b1078b98a87e",
    "sender" : {
      "id" : "ee0609ca6571b1078b98a857",
      "nickname" : "푸반",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedCommentReplyLikeNotificationDetails",
      "feedId" : "ee060a6b6571b1078b98a86a",
      "feedThumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
      "feedCommentId" : "ee060aaf6571b1078b98a874",
      "feedReplyId" : "ee060ae86571b1078b98a87a",
      "feedReplyContent" : "댓글 내용"
    },
    "type" : "FEED_COMMENT_REPLY_LIKED_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.725364",
    "updatedAt" : "2024-12-22T10:59:53.725364",
    "read" : false
  }, {
    "notificationId" : "ee060af16571b1078b98a87c",
    "sender" : {
      "id" : "ee0609a76571b1078b98a855",
      "nickname" : "아티",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedCommentReplyNotificationDetails",
      "feedCommentId" : "ee060aaf6571b1078b98a874",
      "feedId" : "ee060a6b6571b1078b98a86a",
      "feedThumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
      "feedReplyId" : "ee060ae86571b1078b98a87a",
      "feedReplyContent" : "댓글 내용"
    },
    "type" : "FEED_COMMENT_REPLY_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.704933",
    "updatedAt" : "2024-12-22T10:59:53.704933",
    "read" : false
  }, {
    "notificationId" : "ee060ace6571b1078b98a879",
    "sender" : {
      "id" : "ee0609ca6571b1078b98a857",
      "nickname" : "푸반",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedCommentReplyNotificationDetails",
      "feedCommentId" : "ee060aaf6571b1078b98a874",
      "feedId" : "ee060a6b6571b1078b98a86a",
      "feedThumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
      "feedReplyId" : "ee060ac56571b1078b98a877",
      "feedReplyContent" : "댓글 내용"
    },
    "type" : "FEED_COMMENT_REPLY_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.669639",
    "updatedAt" : "2024-12-22T10:59:53.669639",
    "read" : false
  }, {
    "notificationId" : "ee060ab66571b1078b98a876",
    "sender" : {
      "id" : "ee0609a76571b1078b98a855",
      "nickname" : "아티",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedCommentNotificationDetails",
      "feedId" : "ee060a6b6571b1078b98a86a",
      "feedThumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
      "feedCommentId" : "ee060aaf6571b1078b98a874",
      "feedCommentContent" : "댓글 내용"
    },
    "type" : "FEED_COMMENT_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.647498",
    "updatedAt" : "2024-12-22T10:59:53.647498",
    "read" : false
  }, {
    "notificationId" : "ee060aa36571b1078b98a873",
    "sender" : {
      "id" : "ee0609ca6571b1078b98a857",
      "nickname" : "푸반",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedCommentNotificationDetails",
      "feedId" : "ee060a6b6571b1078b98a86a",
      "feedThumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
      "feedCommentId" : "ee060a9a6571b1078b98a871",
      "feedCommentContent" : "댓글 내용"
    },
    "type" : "FEED_COMMENT_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.626555",
    "updatedAt" : "2024-12-22T10:59:53.626555",
    "read" : false
  }, {
    "notificationId" : "ee060a926571b1078b98a870",
    "sender" : {
      "id" : "ee0609ca6571b1078b98a857",
      "nickname" : "푸반",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedLikeNotificationDetails",
      "feedId" : "ee060a6b6571b1078b98a86a",
      "feedThumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "type" : "FEED_LIKED_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.609686",
    "updatedAt" : "2024-12-22T10:59:53.609686",
    "read" : false
  }, {
    "notificationId" : "ee060a576571b1078b98a867",
    "sender" : {
      "id" : "ee0609ca6571b1078b98a857",
      "nickname" : "푸반",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedCollectionNotificationDetails",
      "feedCollectionId" : "ee060a4c6571b1078b98a864",
      "feedCollectionTitle" : "테스트 컬렉션",
      "feedCollectionThumbnailUrl" : null
    },
    "type" : "FEED_COLLECTION_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.548789",
    "updatedAt" : "2024-12-22T10:59:53.548789",
    "read" : false
  }, {
    "notificationId" : "ee060a3e6571b1078b98a863",
    "sender" : {
      "id" : "ee0609ca6571b1078b98a857",
      "nickname" : "푸반",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "FeedNotificationDetails",
      "feedId" : "ee060a306571b1078b98a85f",
      "feedThumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "type" : "FEED_ADDED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.520196",
    "updatedAt" : "2024-12-22T10:59:53.520196",
    "read" : false
  }, {
    "notificationId" : "ee060a236571b1078b98a85c",
    "sender" : {
      "id" : "ee0609ca6571b1078b98a857",
      "nickname" : "푸반",
      "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "target" : {
      "@type" : "MemberFollowedNotificationDetails",
      "followed" : true
    },
    "type" : "MEMBER_FOLLOWED_EVENT",
    "createdAt" : "2024-12-22T10:59:53.503823",
    "updatedAt" : "2024-12-22T10:59:53.503823",
    "read" : false
  } ],
  "pageable" : {
    "sort" : {
      "sorted" : true,
      "unsorted" : false,
      "empty" : false
    },
    "pageNumber" : 0,
    "pageSize" : 100,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : true,
    "unsorted" : false,
    "empty" : false
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 16,
  "size" : 100,
  "empty" : false
}

개별 알림 조회 🔐

HTTP request

GET /api/notifications/ee060d996571b1078b98a8d2 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:53 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 741

{
  "notificationId" : "ee060d996571b1078b98a8d2",
  "sender" : {
    "id" : "ee060bfe6571b1078b98a895",
    "nickname" : "아티",
    "imageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
  },
  "target" : {
    "@type" : "FeedCollectionReplyNotificationDetails",
    "feedCollectionId" : "ee060d1d6571b1078b98a8bf",
    "feedCollectionThumbnailUrl" : null,
    "feedCollectionCommentId" : "ee060d5c6571b1078b98a8c8",
    "feedCollectionReplyId" : "ee060d906571b1078b98a8d0",
    "feedCollectionReplyContent" : "대댓글입니다."
  },
  "type" : "FEED_COLLECTION_COMMENT_REPLY_ADDED_EVENT",
  "createdAt" : "2024-12-22T10:59:54.38405",
  "updatedAt" : "2024-12-22T10:59:54.452212",
  "read" : true
}

모든 알림을 읽음으로 변경 🔐

HTTP request

PUT /api/notifications/read-status HTTP/1.1
Accept: application/json;charset=UTF-8
Content-Type: application/json;charset=UTF-8
Host: localhost:36185

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:54 GMT
Keep-Alive: timeout=60
Connection: keep-alive

알림 개별 삭제 🔐

HTTP request

DELETE /api/notifications/ee0611d56571b1078b98a952 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:54 GMT
Keep-Alive: timeout=60
Connection: keep-alive

모든 읽은 알림 삭제 🔐

HTTP request

DELETE /api/notifications/read-status HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:55 GMT
Keep-Alive: timeout=60
Connection: keep-alive

알림 설정

알림 설정 조회 🔐

HTTP request

GET /api/notification/settings HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:55 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 175

{
  "allNotification" : true,
  "feedLike" : true,
  "collectionLike" : true,
  "commentLike" : true,
  "follow" : true,
  "feedComment" : true,
  "collectionComment" : true
}

알림 설정 변경 🔐

HTTP request

PUT /api/notification/settings HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 153

{
  "collectionLike" : false,
  "collectionComment" : false,
  "feedLike" : false,
  "commentLike" : false,
  "follow" : false,
  "feedComment" : false
}

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:55 GMT
Keep-Alive: timeout=60
Connection: keep-alive

모든 알림 설정 on/off 변경 🔐

HTTP request

PUT /api/notification/settings/all HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 21

{
  "allow" : false
}

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:55 GMT
Keep-Alive: timeout=60
Connection: keep-alive

SSE

알림 실시간 전송 🔐

GET /api/sse HTTP/1.1
Host: localhost:51316
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: text/event-stream
Transfer-Encoding: chunked
Date: Fri, 19 Jan 2024 03:39:32 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1981

event:connect
data:connected!

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

event:notification
id:1fcd6b1df405114492eae118
data:{"count":5}

이미지

이미지 업로드 공통

요청 body에 이미지 파일이 깨져서 나와서 curl입니다

이미지 크기가 2.8MB보다 클 때

HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:44 GMT
Connection: close
Content-Length: 111

{
  "message" : "2.8MB 이하의 이미지만 업로드 가능합니다",
  "code" : "i007",
  "errors" : { }
}

지원되지 않는 형식의 이미지일 때

현재 jpeg(jpg), png 지원됩니다

HTTP response
HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:44 GMT
Connection: close
Content-Length: 102

{
  "message" : "지원되지 않는 이미지 형식입니다",
  "code" : "i005",
  "errors" : { }
}

회원 이미지 업로드

성공

Curl request
$ curl 'http://localhost:36185/api/images/members' -i -X POST \
    -H 'Content-Type: multipart/form-data; boundary="9nkJq-bCU-BLnAW71juRp8rIm4jbYH"' \
    -F 'file=@potato.jpg;type=application/octet-stream'
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:44 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 70

{
  "id" : "ee05e8126571b1078b98a686",
  "url" : "https://s3Url/key"
}

피드 이미지 업로드

성공

Curl request
$ curl 'http://localhost:36185/api/images/feeds' -i -X POST \
    -H 'Content-Type: multipart/form-data; boundary="FzMNRcIKpjAA4aq7kS7g-IE6l6MVYgV"' \
    -F 'file=@potato.jpg;type=application/octet-stream'
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:44 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 70

{
  "id" : "ee05eaa56571b1078b98a693",
  "url" : "https://s3Url/key"
}

이미지 삭제

성공

HTTP request
DELETE /api/images/ee05e77e6571b1078b98a681 HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:44 GMT
Keep-Alive: timeout=60
Connection: keep-alive

존재하지 않는 이미지 id일 때

HTTP response
HTTP/1.1 404 Not Found
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:43 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 108

{
  "message" : "해당 id의 이미지가 존재하지 않습니다",
  "code" : "i001",
  "errors" : { }
}

현재 로그인한 회원이 업로드한 이미지가 아닐 때

HTTP response
HTTP/1.1 401 Unauthorized
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:43 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 79

{
  "message" : "권한이 없습니다",
  "code" : "a001",
  "errors" : { }
}

컬렉션

컬렉션 등록 🔐

HTTP request

POST /api/feed_collections HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 211

{
  "private" : false,
  "description" : "테스트 컬렉션입니다.",
  "moodIds" : [ "ee05931f6571b1078b989fcd", "ee0593386571b1078b989fce", "ee0593516571b1078b989fcf" ],
  "title" : "테스트 컬렉션"
}

HTTP response

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:22 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 39

{
  "id" : "ee05936e6571b1078b989fd0"
}

컬렉션 수정 🔐

HTTP request

PUT /api/feed_collections/ee059c886571b1078b98a087 HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 178

{
  "moodIds" : [ "ee059c586571b1078b98a085", "ee059c706571b1078b98a086" ],
  "title" : "수정된 테스트 컬렉션",
  "content" : "수정된 테스트 컬렉션입니다."
}

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:25 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 피드 리스트 수정 🔐

HTTP request

PUT /api/feed_collections/ee05a4146571b1078b98a13a/feeds HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 160

{
  "feedIds" : [ "ee05a3bc6571b1078b98a133", "ee05a3986571b1078b98a12d", "ee05a37a6571b1078b98a127", "ee05a35a6571b1078b98a121", "ee05a32a6571b1078b98a11b" ]
}

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:27 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 피드 리스트에 피드 추가 🔐

HTTP request

POST /api/feed_collections/ee059ffd6571b1078b98a0d8/feeds HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 43

{
  "feedId" : "ee059f176571b1078b98a0b9"
}

HTTP response

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 피드 리스트에서 피드 삭제 🔐

HTTP request

DELETE /api/feed_collections/ee0598a56571b1078b98a033/feeds/ee0597bd6571b1078b98a014 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:24 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 피드 리스트 및 썸네일 수정 🔐

HTTP request

PUT /api/feed_collections/ee059ab06571b1078b98a05d/feeds HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 256

{
  "thumbnail" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png1",
  "feedIds" : [ "ee059a476571b1078b98a056", "ee059a1d6571b1078b98a050", "ee0599f36571b1078b98a04a", "ee0599ca6571b1078b98a044", "ee0599a96571b1078b98a03e" ]
}

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:24 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 삭제 🔐

HTTP request

DELETE /api/feed_collections/ee0591786571b1078b989fa6 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:22 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 전체 조회 ❤️

HTTP request

GET /api/feed_collections?page=0&size=10 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:28 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 3177

{
  "content" : [ {
    "id" : "ee05a7ce6571b1078b98a194",
    "author" : {
      "id" : "ee05a61f6571b1078b98a167",
      "name" : "아티",
      "mood" : "베지테리언",
      "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "title" : "테스트 컬렉션",
    "description" : "테스트 컬렉션입니다.",
    "likeCount" : 0,
    "followerCount" : 0,
    "commentCount" : 0,
    "thumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "feedCount" : 5,
    "storeMood" : [ {
      "id" : "ee05a7386571b1078b98a18b",
      "name" : "행복"
    }, {
      "id" : "ee05a7566571b1078b98a18c",
      "name" : "행복"
    }, {
      "id" : "ee05a7676571b1078b98a18d",
      "name" : "행복"
    } ],
    "createdAt" : "2024-12-22T10:59:28.334874",
    "updatedAt" : "2024-12-22T10:59:28.365474",
    "liked" : false
  }, {
    "id" : "ee05a7a46571b1078b98a191",
    "author" : {
      "id" : "ee05a61f6571b1078b98a167",
      "name" : "아티",
      "mood" : "베지테리언",
      "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "title" : "테스트 컬렉션",
    "description" : "테스트 컬렉션입니다.",
    "likeCount" : 0,
    "followerCount" : 0,
    "commentCount" : 0,
    "thumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "feedCount" : 5,
    "storeMood" : [ {
      "id" : "ee05a7386571b1078b98a18b",
      "name" : "행복"
    }, {
      "id" : "ee05a7566571b1078b98a18c",
      "name" : "행복"
    }, {
      "id" : "ee05a7676571b1078b98a18d",
      "name" : "행복"
    } ],
    "createdAt" : "2024-12-22T10:59:28.293024",
    "updatedAt" : "2024-12-22T10:59:28.317483",
    "liked" : false
  }, {
    "id" : "ee05a77b6571b1078b98a18e",
    "author" : {
      "id" : "ee05a61f6571b1078b98a167",
      "name" : "아티",
      "mood" : "베지테리언",
      "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
    },
    "title" : "테스트 컬렉션",
    "description" : "테스트 컬렉션입니다.",
    "likeCount" : 0,
    "followerCount" : 0,
    "commentCount" : 0,
    "thumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "feedCount" : 5,
    "storeMood" : [ {
      "id" : "ee05a7386571b1078b98a18b",
      "name" : "행복"
    }, {
      "id" : "ee05a7566571b1078b98a18c",
      "name" : "행복"
    }, {
      "id" : "ee05a7676571b1078b98a18d",
      "name" : "행복"
    } ],
    "createdAt" : "2024-12-22T10:59:28.251729",
    "updatedAt" : "2024-12-22T10:59:28.276287",
    "liked" : false
  } ],
  "pageable" : {
    "sort" : {
      "sorted" : true,
      "unsorted" : false,
      "empty" : false
    },
    "pageNumber" : 0,
    "pageSize" : 10,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : true,
    "unsorted" : false,
    "empty" : false
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 3,
  "size" : 10,
  "empty" : false
}

컬렉션 개별 조회 ❤️

HTTP request

GET /api/feed_collections/ee05a1bf6571b1078b98a102 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:26 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 5824

{
  "id" : "ee05a1bf6571b1078b98a102",
  "author" : {
    "id" : "ee05a0546571b1078b98a0db",
    "name" : "아티",
    "mood" : "베지테리언",
    "profileImageUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png"
  },
  "title" : "테스트 컬렉션",
  "description" : "테스트 컬렉션입니다.",
  "likeCount" : 0,
  "followerCount" : 0,
  "viewCount" : 0,
  "feedCount" : 5,
  "commentCount" : 3,
  "thumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
  "feeds" : [ {
    "id" : "ee05a0d76571b1078b98a0e3",
    "thumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "content" : "맛있어요!",
    "storeMood" : [ {
      "id" : "1",
      "name" : "가족과 함께"
    }, {
      "id" : "3",
      "name" : "감성"
    }, {
      "id" : "4",
      "name" : "데이트"
    } ],
    "store" : {
      "id" : "1",
      "name" : "영업중 식당"
    },
    "likeCount" : 0,
    "commentCount" : 0,
    "createdAt" : "2024-12-22T10:59:26.551929",
    "updatedAt" : null,
    "liked" : false
  }, {
    "id" : "ee05a0fd6571b1078b98a0e9",
    "thumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "content" : "맛있어요!",
    "storeMood" : [ {
      "id" : "1",
      "name" : "가족과 함께"
    }, {
      "id" : "3",
      "name" : "감성"
    }, {
      "id" : "4",
      "name" : "데이트"
    } ],
    "store" : {
      "id" : "1",
      "name" : "영업중 식당"
    },
    "likeCount" : 0,
    "commentCount" : 0,
    "createdAt" : "2024-12-22T10:59:26.589295",
    "updatedAt" : null,
    "liked" : false
  }, {
    "id" : "ee05a1206571b1078b98a0ef",
    "thumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "content" : "맛있어요!",
    "storeMood" : [ {
      "id" : "1",
      "name" : "가족과 함께"
    }, {
      "id" : "3",
      "name" : "감성"
    }, {
      "id" : "4",
      "name" : "데이트"
    } ],
    "store" : {
      "id" : "1",
      "name" : "영업중 식당"
    },
    "likeCount" : 0,
    "commentCount" : 0,
    "createdAt" : "2024-12-22T10:59:26.624549",
    "updatedAt" : null,
    "liked" : false
  }, {
    "id" : "ee05a1436571b1078b98a0f5",
    "thumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "content" : "맛있어요!",
    "storeMood" : [ {
      "id" : "1",
      "name" : "가족과 함께"
    }, {
      "id" : "3",
      "name" : "감성"
    }, {
      "id" : "4",
      "name" : "데이트"
    } ],
    "store" : {
      "id" : "1",
      "name" : "영업중 식당"
    },
    "likeCount" : 0,
    "commentCount" : 0,
    "createdAt" : "2024-12-22T10:59:26.659",
    "updatedAt" : null,
    "liked" : false
  }, {
    "id" : "ee05a1676571b1078b98a0fb",
    "thumbnailUrl" : "https://foodymoody-test.s3.ap-northeast-2.amazonaws.com/foodymoody_logo.png",
    "content" : "맛있어요!",
    "storeMood" : [ {
      "id" : "1",
      "name" : "가족과 함께"
    }, {
      "id" : "3",
      "name" : "감성"
    }, {
      "id" : "4",
      "name" : "데이트"
    } ],
    "store" : {
      "id" : "1",
      "name" : "영업중 식당"
    },
    "likeCount" : 0,
    "commentCount" : 0,
    "createdAt" : "2024-12-22T10:59:26.695203",
    "updatedAt" : null,
    "liked" : false
  } ],
  "comments" : {
    "content" : [ {
      "id" : "ee05a1ed6571b1078b98a105",
      "feedCollectionId" : "ee05a1bf6571b1078b98a102",
      "content" : "댓글 내용",
      "deleted" : false,
      "hasReply" : false,
      "createdAt" : "2024-12-22T10:59:26.82953",
      "updatedAt" : "2024-12-22T10:59:26.82953",
      "liked" : false,
      "likeCount" : 0,
      "author" : {
        "id" : "ee05a0816571b1078b98a0dd",
        "name" : "푸반",
        "mood" : "베지테리언",
        "profileImageUrl" : null
      }
    }, {
      "id" : "ee05a2006571b1078b98a108",
      "feedCollectionId" : "ee05a1bf6571b1078b98a102",
      "content" : "댓글 내용",
      "deleted" : false,
      "hasReply" : false,
      "createdAt" : "2024-12-22T10:59:26.848588",
      "updatedAt" : "2024-12-22T10:59:26.848588",
      "liked" : false,
      "likeCount" : 0,
      "author" : {
        "id" : "ee05a0816571b1078b98a0dd",
        "name" : "푸반",
        "mood" : "베지테리언",
        "profileImageUrl" : null
      }
    }, {
      "id" : "ee05a2166571b1078b98a10b",
      "feedCollectionId" : "ee05a1bf6571b1078b98a102",
      "content" : "댓글 내용",
      "deleted" : false,
      "hasReply" : true,
      "createdAt" : "2024-12-22T10:59:26.870044",
      "updatedAt" : "2024-12-22T10:59:26.870044",
      "liked" : true,
      "likeCount" : 1,
      "author" : {
        "id" : "ee05a0816571b1078b98a0dd",
        "name" : "푸반",
        "mood" : "베지테리언",
        "profileImageUrl" : null
      }
    } ],
    "pageable" : {
      "sort" : {
        "sorted" : false,
        "unsorted" : true,
        "empty" : true
      },
      "pageNumber" : 0,
      "pageSize" : 10,
      "offset" : 0,
      "paged" : true,
      "unpaged" : false
    },
    "sort" : {
      "sorted" : false,
      "unsorted" : true,
      "empty" : true
    },
    "first" : true,
    "last" : true,
    "number" : 0,
    "numberOfElements" : 3,
    "size" : 10,
    "empty" : false
  },
  "moods" : [ {
    "id" : "ee05a1826571b1078b98a0ff",
    "name" : "행복"
  }, {
    "id" : "ee05a1966571b1078b98a100",
    "name" : "행복"
  }, {
    "id" : "ee05a1a96571b1078b98a101",
    "name" : "행복"
  } ],
  "createdAt" : "2024-12-22T10:59:26.784017",
  "updatedAt" : "2024-12-22T10:59:26.81265",
  "liked" : false,
  "followed" : false,
  "private" : false
}

컬렉션 커멘트 조회 ❤️

HTTP request

GET /api/feed_collections/ee05aaac6571b1078b98a1c1/comments?page=1&size=10 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:29 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 5142

{
  "content" : [ {
    "id" : "ee05ac7a6571b1078b98a1fd",
    "feedCollectionId" : "ee05aaac6571b1078b98a1c1",
    "content" : "댓글 내용",
    "deleted" : false,
    "hasReply" : false,
    "createdAt" : "2024-12-22T10:59:29.530313",
    "updatedAt" : "2024-12-22T10:59:29.530313",
    "liked" : false,
    "likeCount" : 0,
    "author" : {
      "id" : "ee05a97d6571b1078b98a19c",
      "name" : "푸반",
      "mood" : "베지테리언",
      "profileImageUrl" : null
    }
  }, {
    "id" : "ee05ac636571b1078b98a1fa",
    "feedCollectionId" : "ee05aaac6571b1078b98a1c1",
    "content" : "댓글 내용",
    "deleted" : false,
    "hasReply" : false,
    "createdAt" : "2024-12-22T10:59:29.508034",
    "updatedAt" : "2024-12-22T10:59:29.508034",
    "liked" : false,
    "likeCount" : 0,
    "author" : {
      "id" : "ee05a97d6571b1078b98a19c",
      "name" : "푸반",
      "mood" : "베지테리언",
      "profileImageUrl" : null
    }
  }, {
    "id" : "ee05ac4e6571b1078b98a1f7",
    "feedCollectionId" : "ee05aaac6571b1078b98a1c1",
    "content" : "댓글 내용",
    "deleted" : false,
    "hasReply" : false,
    "createdAt" : "2024-12-22T10:59:29.486187",
    "updatedAt" : "2024-12-22T10:59:29.486187",
    "liked" : false,
    "likeCount" : 0,
    "author" : {
      "id" : "ee05a97d6571b1078b98a19c",
      "name" : "푸반",
      "mood" : "베지테리언",
      "profileImageUrl" : null
    }
  }, {
    "id" : "ee05ac396571b1078b98a1f4",
    "feedCollectionId" : "ee05aaac6571b1078b98a1c1",
    "content" : "댓글 내용",
    "deleted" : false,
    "hasReply" : false,
    "createdAt" : "2024-12-22T10:59:29.4656",
    "updatedAt" : "2024-12-22T10:59:29.4656",
    "liked" : false,
    "likeCount" : 0,
    "author" : {
      "id" : "ee05a97d6571b1078b98a19c",
      "name" : "푸반",
      "mood" : "베지테리언",
      "profileImageUrl" : null
    }
  }, {
    "id" : "ee05ac226571b1078b98a1f1",
    "feedCollectionId" : "ee05aaac6571b1078b98a1c1",
    "content" : "댓글 내용",
    "deleted" : false,
    "hasReply" : false,
    "createdAt" : "2024-12-22T10:59:29.442274",
    "updatedAt" : "2024-12-22T10:59:29.442274",
    "liked" : false,
    "likeCount" : 0,
    "author" : {
      "id" : "ee05a97d6571b1078b98a19c",
      "name" : "푸반",
      "mood" : "베지테리언",
      "profileImageUrl" : null
    }
  }, {
    "id" : "ee05ac0a6571b1078b98a1ee",
    "feedCollectionId" : "ee05aaac6571b1078b98a1c1",
    "content" : "댓글 내용",
    "deleted" : false,
    "hasReply" : false,
    "createdAt" : "2024-12-22T10:59:29.418219",
    "updatedAt" : "2024-12-22T10:59:29.418219",
    "liked" : false,
    "likeCount" : 0,
    "author" : {
      "id" : "ee05a97d6571b1078b98a19c",
      "name" : "푸반",
      "mood" : "베지테리언",
      "profileImageUrl" : null
    }
  }, {
    "id" : "ee05abf86571b1078b98a1eb",
    "feedCollectionId" : "ee05aaac6571b1078b98a1c1",
    "content" : "댓글 내용",
    "deleted" : false,
    "hasReply" : false,
    "createdAt" : "2024-12-22T10:59:29.400282",
    "updatedAt" : "2024-12-22T10:59:29.400282",
    "liked" : false,
    "likeCount" : 0,
    "author" : {
      "id" : "ee05a97d6571b1078b98a19c",
      "name" : "푸반",
      "mood" : "베지테리언",
      "profileImageUrl" : null
    }
  }, {
    "id" : "ee05abe36571b1078b98a1e8",
    "feedCollectionId" : "ee05aaac6571b1078b98a1c1",
    "content" : "댓글 내용",
    "deleted" : false,
    "hasReply" : false,
    "createdAt" : "2024-12-22T10:59:29.380019",
    "updatedAt" : "2024-12-22T10:59:29.380019",
    "liked" : false,
    "likeCount" : 0,
    "author" : {
      "id" : "ee05a97d6571b1078b98a19c",
      "name" : "푸반",
      "mood" : "베지테리언",
      "profileImageUrl" : null
    }
  }, {
    "id" : "ee05abce6571b1078b98a1e5",
    "feedCollectionId" : "ee05aaac6571b1078b98a1c1",
    "content" : "댓글 내용",
    "deleted" : false,
    "hasReply" : false,
    "createdAt" : "2024-12-22T10:59:29.358265",
    "updatedAt" : "2024-12-22T10:59:29.358265",
    "liked" : false,
    "likeCount" : 0,
    "author" : {
      "id" : "ee05a97d6571b1078b98a19c",
      "name" : "푸반",
      "mood" : "베지테리언",
      "profileImageUrl" : null
    }
  }, {
    "id" : "ee05abb56571b1078b98a1e2",
    "feedCollectionId" : "ee05aaac6571b1078b98a1c1",
    "content" : "댓글 내용",
    "deleted" : false,
    "hasReply" : false,
    "createdAt" : "2024-12-22T10:59:29.333968",
    "updatedAt" : "2024-12-22T10:59:29.333968",
    "liked" : false,
    "likeCount" : 0,
    "author" : {
      "id" : "ee05a97d6571b1078b98a19c",
      "name" : "푸반",
      "mood" : "베지테리언",
      "profileImageUrl" : null
    }
  } ],
  "pageable" : {
    "sort" : {
      "sorted" : true,
      "unsorted" : false,
      "empty" : false
    },
    "pageNumber" : 1,
    "pageSize" : 10,
    "offset" : 10,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : true,
    "unsorted" : false,
    "empty" : false
  },
  "first" : false,
  "last" : false,
  "number" : 1,
  "numberOfElements" : 10,
  "size" : 10,
  "empty" : false
}

컬렉션 피드 리스트 조회 ❤️

HTTP request

GET /api/feed_collections/ee058ede6571b1078b989f7c/feeds HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 160

{
  "feedIds" : [ "ee058e516571b1078b989f75", "ee058e286571b1078b989f6f", "ee058dfe6571b1078b989f69", "ee058dd16571b1078b989f63", "ee058da36571b1078b989f5d" ]
}

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:21 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 2451

{
  "content" : [ {
    "feedAllCount" : 20,
    "feedThumbnailUrl" : "https://s3Url/key",
    "storeName" : "영업중 식당",
    "feedId" : "ee058e516571b1078b989f75",
    "createdAt" : "2024-12-22T10:59:21.809214",
    "updatedAt" : null,
    "description" : "맛있어요!",
    "moodNames" : [ "가족과 함께", "감성", "데이트" ],
    "isLiked" : false,
    "likeCount" : 0,
    "feedCommentCount" : 0
  }, {
    "feedAllCount" : 20,
    "feedThumbnailUrl" : "https://s3Url/key",
    "storeName" : "영업중 식당",
    "feedId" : "ee058e286571b1078b989f6f",
    "createdAt" : "2024-12-22T10:59:21.76863",
    "updatedAt" : null,
    "description" : "맛있어요!",
    "moodNames" : [ "가족과 함께", "감성", "데이트" ],
    "isLiked" : false,
    "likeCount" : 0,
    "feedCommentCount" : 0
  }, {
    "feedAllCount" : 20,
    "feedThumbnailUrl" : "https://s3Url/key",
    "storeName" : "영업중 식당",
    "feedId" : "ee058dfe6571b1078b989f69",
    "createdAt" : "2024-12-22T10:59:21.726089",
    "updatedAt" : null,
    "description" : "맛있어요!",
    "moodNames" : [ "가족과 함께", "감성", "데이트" ],
    "isLiked" : false,
    "likeCount" : 0,
    "feedCommentCount" : 0
  }, {
    "feedAllCount" : 20,
    "feedThumbnailUrl" : "https://s3Url/key",
    "storeName" : "영업중 식당",
    "feedId" : "ee058dd16571b1078b989f63",
    "createdAt" : "2024-12-22T10:59:21.681892",
    "updatedAt" : null,
    "description" : "맛있어요!",
    "moodNames" : [ "가족과 함께", "감성", "데이트" ],
    "isLiked" : false,
    "likeCount" : 0,
    "feedCommentCount" : 0
  }, {
    "feedAllCount" : 20,
    "feedThumbnailUrl" : "https://s3Url/key",
    "storeName" : "영업중 식당",
    "feedId" : "ee058da36571b1078b989f5d",
    "createdAt" : "2024-12-22T10:59:21.635438",
    "updatedAt" : null,
    "description" : "맛있어요!",
    "moodNames" : [ "가족과 함께", "감성", "데이트" ],
    "isLiked" : false,
    "likeCount" : 0,
    "feedCommentCount" : 0
  } ],
  "pageable" : {
    "sort" : {
      "sorted" : true,
      "unsorted" : false,
      "empty" : false
    },
    "pageNumber" : 0,
    "pageSize" : 20,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : true,
    "unsorted" : false,
    "empty" : false
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 5,
  "size" : 20,
  "empty" : false
}

컬렉션 무드 추가 🔐

HTTP request

POST /api/feed_collections/ee05ba856571b1078b98a2dc/moods HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 43

{
  "moodId" : "ee05ba9e6571b1078b98a2df"
}

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:32 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 무드 삭제 🔐

HTTP request

DELETE /api/feed_collections/ee05b9a76571b1078b98a2d4/moods/ee05b9c46571b1078b98a2d7 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:32 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 댓글

컬렉션 댓글 등록 🔐

HTTP request

POST /api/feed_collections/ee05af1d6571b1078b98a22a/comments HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 33

{
  "content" : "댓글 내용"
}

HTTP response

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:29 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 39

{
  "id" : "ee05af316571b1078b98a22d"
}

컬렉션 댓글 삭제 🔐

HTTP request

DELETE /api/feed_collections/ee05b3246571b1078b98a266/comments/ee05b33a6571b1078b98a269 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:30 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 댓글 수정 🔐

HTTP request

PUT /api/feed_collections/ee05b1c66571b1078b98a254/comments/ee05b1e26571b1078b98a257 HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 43

{
  "content" : "수정된 댓글 내용"
}

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:30 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 대댓글

컬렉션 대댓글 등록 🔐

HTTP request

POST /api/feed_collections/ee05bf6f6571b1078b98a32e/comments/ee05bf866571b1078b98a331/replies HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 39

{
  "content" : "대댓글입니다."
}

HTTP response

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:33 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 39

{
  "id" : "ee05bfa36571b1078b98a334"
}

컬렉션 대댓글 삭제 🔐

HTTP request

DELETE /api/feed_collections/ee05bced6571b1078b98a2fc/comments/ee05bd066571b1078b98a2ff/replies/ee05bd266571b1078b98a302 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:33 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 대댓글 수정 🔐

HTTP request

PUT /api/feed_collections/ee05c06e6571b1078b98a343/comments/ee05c0876571b1078b98a346/replies/ee05c0ab6571b1078b98a349 HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 49

{
  "content" : "수정된 대댓글입니다."
}

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:34 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 대댓글 조회 ❤️

HTTP request

GET /api/feed_collections/ee05be0d6571b1078b98a311/comments/ee05be236571b1078b98a314/replies HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:33 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1473

{
  "content" : [ {
    "id" : "ee05be686571b1078b98a31d",
    "content" : "대댓글입니다.",
    "createdAt" : "2024-12-22T10:59:34.120691",
    "updatedAt" : "2024-12-22T10:59:34.120691",
    "member" : {
      "memberId" : "ee05bd786571b1078b98a305",
      "nickname" : "아티",
      "profileUrl" : null
    },
    "likeCount" : 1,
    "liked" : true
  }, {
    "id" : "ee05be506571b1078b98a31a",
    "content" : "대댓글입니다.",
    "createdAt" : "2024-12-22T10:59:34.096722",
    "updatedAt" : "2024-12-22T10:59:34.096722",
    "member" : {
      "memberId" : "ee05bd786571b1078b98a305",
      "nickname" : "아티",
      "profileUrl" : null
    },
    "likeCount" : 0,
    "liked" : false
  }, {
    "id" : "ee05be3f6571b1078b98a317",
    "content" : "대댓글입니다.",
    "createdAt" : "2024-12-22T10:59:34.07972",
    "updatedAt" : "2024-12-22T10:59:34.07972",
    "member" : {
      "memberId" : "ee05bd786571b1078b98a305",
      "nickname" : "아티",
      "profileUrl" : null
    },
    "likeCount" : 0,
    "liked" : false
  } ],
  "pageable" : {
    "sort" : {
      "sorted" : true,
      "unsorted" : false,
      "empty" : false
    },
    "pageNumber" : 0,
    "pageSize" : 10,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : true,
    "unsorted" : false,
    "empty" : false
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 3,
  "size" : 10,
  "empty" : false
}

컬렉션 댓글 좋아요

컬렉션 댓글 좋아요 등록 🔐

HTTP request

POST /api/feed_collections/ee05b5d36571b1078b98a292/comments/ee05b5ea6571b1078b98a295/likes HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=ISO-8859-1
Host: localhost:36185

HTTP response

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:31 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 39

{
  "id" : "ee05b60b6571b1078b98a298"
}

컬렉션 댓글 좋아요 취소 🔐

HTTP request

DELETE /api/feed_collections/ee05b6cb6571b1078b98a2a6/comments/ee05b6df6571b1078b98a2a9/likes HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:31 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 대댓글 좋아요

컬렉션 대댓글 좋아요 등록 🔐

HTTP request

POST /api/feed_collections/ee05c2d96571b1078b98a36f/comments/ee05c2ec6571b1078b98a372/replies/ee05c3076571b1078b98a375/likes HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=ISO-8859-1
Host: localhost:36185

HTTP response

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:34 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 39

{
  "id" : "ee05c3266571b1078b98a378"
}

컬렉션 대댓글 좋아요 취소 🔐

HTTP request

DELETE /api/feed_collections/ee05c19a6571b1078b98a358/comments/ee05c1b06571b1078b98a35b/replies/ee05c1c96571b1078b98a35e/likes HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:34 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 좋아요

컬렉션 좋아요 등록 🔐

HTTP request

POST /api/feed_collections/ee05b8fb6571b1078b98a2cb/likes HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=ISO-8859-1
Host: localhost:36185

HTTP response

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:32 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 39

{
  "id" : "ee05b9146571b1078b98a2ce"
}

컬렉션 좋아요 취소 🔐

HTTP request

DELETE /api/feed_collections/ee05b7dc6571b1078b98a2ba/likes HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:32 GMT
Keep-Alive: timeout=60
Connection: keep-alive

컬렉션 무드

컬렉션 무드 등록 🔐

HTTP request

POST /api/feed_collections/moods HTTP/1.1
Content-Type: application/json
Host: localhost:36185
Content-Length: 23

{
  "name" : "행복"
}

HTTP response

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:33 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 39

{
  "id" : "ee05bc146571b1078b98a2ef"
}

컬렉션 무드 조회

HTTP request

GET /api/feed_collections/moods?page=0&size=10 HTTP/1.1
Host: localhost:36185

HTTP response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:32 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 436

[ {
  "id" : "ee05bb276571b1078b98a2e4",
  "name" : "행복"
}, {
  "id" : "ee05bb336571b1078b98a2e5",
  "name" : "행복"
}, {
  "id" : "ee05bb3f6571b1078b98a2e6",
  "name" : "행복"
}, {
  "id" : "ee05bb4c6571b1078b98a2e7",
  "name" : "행복"
}, {
  "id" : "ee05bb596571b1078b98a2e8",
  "name" : "행복"
}, {
  "id" : "ee05bb646571b1078b98a2e9",
  "name" : "행복"
}, {
  "id" : "ee05bb6e6571b1078b98a2ea",
  "name" : "행복"
} ]

가게

가게 상세정보 조회 ❤️

성공

HTTP request
GET /api/stores/2 HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:56 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 251

{
  "name" : "폐업한 식당",
  "rating" : 0.0,
  "liked" : false,
  "likeCount" : 0,
  "feedCount" : 0,
  "address" : "지번주소2",
  "roadAddress" : "도로명주소2",
  "phone" : "전화번호2",
  "x" : 1.0,
  "y" : 1.0,
  "closed" : true
}

가게 검색

성공

HTTP request
GET /api/stores/search?query=%EC%86%A1%ED%8C%8C%EA%B5%AC HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:56 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1844

[ {
  "id" : "10",
  "name" : "식당4",
  "address" : "지번주소2",
  "roadAddress" : "도로명주소, (송파구)"
}, {
  "id" : "11",
  "name" : "식당5",
  "address" : "지번주소2",
  "roadAddress" : "도로명주소, (송파구)"
}, {
  "id" : "12",
  "name" : "식당6",
  "address" : "지번주소2",
  "roadAddress" : "도로명주소, (송파구)"
}, {
  "id" : "13",
  "name" : "식당7",
  "address" : "지번주소2",
  "roadAddress" : "도로명주소, (송파구)"
}, {
  "id" : "14",
  "name" : "식당8",
  "address" : "지번주소2",
  "roadAddress" : "도로명주소, (송파구)"
}, {
  "id" : "15",
  "name" : "식당9",
  "address" : "지번주소2",
  "roadAddress" : "도로명주소, (송파구)"
}, {
  "id" : "16",
  "name" : "식당10",
  "address" : "지번주소2",
  "roadAddress" : "도로명주소, (송파구)"
}, {
  "id" : "17",
  "name" : "식당11",
  "address" : "지번주소2",
  "roadAddress" : "도로명주소, (송파구)"
}, {
  "id" : "18",
  "name" : "식당12",
  "address" : "지번주소2",
  "roadAddress" : "도로명주소, (송파구)"
}, {
  "id" : "3",
  "name" : "송파구",
  "address" : "지번주소2",
  "roadAddress" : "도로명주소2"
}, {
  "id" : "4",
  "name" : "송파구식당",
  "address" : "지번주소2",
  "roadAddress" : "도로명주소2"
}, {
  "id" : "5",
  "name" : "식당송파구",
  "address" : "지번주소2",
  "roadAddress" : "도로명주소2"
}, {
  "id" : "6",
  "name" : "식당 송파구 식당",
  "address" : "지번주소2",
  "roadAddress" : "도로명주소2"
}, {
  "id" : "7",
  "name" : "식당송파구식당",
  "address" : "지번주소2",
  "roadAddress" : "도로명주소2"
}, {
  "id" : "8",
  "name" : "송파구송파구",
  "address" : "지번주소2",
  "roadAddress" : "서울특별시 송파구 어딘가12로 1-1"
} ]

가게 좋아요 등록 🔐

성공

HTTP request
POST /api/stores/1/likes HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:57 GMT
Keep-Alive: timeout=60
Connection: keep-alive

가게 좋아요 취소 🔐

성공

HTTP request
DELETE /api/stores/1/likes HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Date: Sun, 22 Dec 2024 10:59:57 GMT
Keep-Alive: timeout=60
Connection: keep-alive

성공

HTTP request
GET /api/stores/2/feeds HTTP/1.1
Content-Type: application/json
Host: localhost:36185
HTTP response
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 22 Dec 2024 10:59:55 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 703

{
  "content" : [ {
    "feedId" : "ee06163d6571b1078b98a9b9",
    "thumbnailUrl" : "https://s3Url/key"
  }, {
    "feedId" : "ee06160f6571b1078b98a9b1",
    "thumbnailUrl" : "https://s3Url/key"
  }, {
    "feedId" : "ee0615e76571b1078b98a9a9",
    "thumbnailUrl" : "https://s3Url/key"
  } ],
  "pageable" : {
    "sort" : {
      "sorted" : false,
      "unsorted" : true,
      "empty" : true
    },
    "pageNumber" : 0,
    "pageSize" : 10,
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "sort" : {
    "sorted" : false,
    "unsorted" : true,
    "empty" : true
  },
  "first" : true,
  "last" : true,
  "number" : 0,
  "numberOfElements" : 3,
  "size" : 10,
  "empty" : false
}