Skip to content

API Document

Bae-chaegyeom edited this page Dec 20, 2020 · 32 revisions

API Document

목차

  1. WINE
  1. USER
  1. COMMENT
  1. WISHLIST

Wine

와인에 대한 정보를 요청합니다.

HTTP Request

https://buenosvinosserver.ga/wine

Request parameters

request URL에서 다음과 같은 Query parameter에 대해 값을 제공합니다.
값을 지정하지 않는 경우에 해당 항목에 대해 모든 와인을 반환합니다.

Parameter Type Description
id integer 와인의PK ID를 입력합니다
name string 찾고자 하는 와인의 이름을 입력합니다
sweet_min integer 필터링 하고자 하는 당도의 최솟값을 입력합니다
sweet_max integer 필터링 하고자 하는 당도의 최댓값을 입력합니다
acidic_min integer 필터링 하고자 하는 산도의 최솟값을 입력합니다
acidic_max integer 필터링 하고자 하는 산도의 최댓값을 입력합니다
body_min integer 필터링 하고자 하는 바디감의 최솟값을 입력합니다
body_max integer 필터링 하고자 하는 바디감의 최댓값을 입력합니다
type[] array 와인의 타입을 입력합니다 ex)레드, 화이트, 스파클링, 로제
rating number 별점을 입력합니다(1자릿수의 소수) ex) 2.0
country[] array 국가를 입력합니다
food[] array 안주를 지정합니다

Example

Request
https://buenosvinosserver.ga/wine?sweet_min=1&sweet_max=5&acidic_min=1&acidic_max=5&body_min=1&body_max=5&rating=3.0&name=도스 코파스
Response
[
    {
        "id": 6,
        "name": "도스 코파스 샤도네이",
        "name_en": "Dos Copas Chardonnay",
        "image": "https://penzim.synology.me/image/finalProject/wine_image/6.png",
        "body": 3,
        "sweet": 1,
        "acidic": 4,
        "alcohol_content": "13",
        "winery": "Bodega y Vinedos de Aguirre S.A.",
        "content": "밝은 노란 빛을 띠고 열대 과일의 진한 향이 느껴진다. 복숭아와 파인애플의 맛이 프레시하게 조화를 이루며 지속력이 뛰어나다. 신선한 치즈나 해산물, 그린 샐러드 등과 좋은 궁합을 보여준다. 지중해성 기후와 큰 일교차가특징인 칠레 마울레 밸리의 Villa Alegre 에서 수확한 포도로 풍부한 탄닌과 훌륭한 향이 돋보이는 와인이 다",
        "rating_sum": 799,
        "rating_count": 258,
        "createdAt": "2020-12-02T00:00:00.000Z",
        "rating": 3.0968992248062017,
        "type": {
            "id": 2,
            "name": "화이트",
            "type_content": "와인은 색에 따라 레드와인(Red wine), 로제와인(Rose wine), 화이트 와인(White wine)으로 나뉘는데, 이 중 청포도 계열 포도로 제조되는 와인으로 프랑스어로 뱅 블랑(Vin Blanc)이라고 한다. 화이트와인은 껍질과 씨에 포함되어 있는 타닌(Tannin)이 레드와인에 비해 상대적으로 적어 색은 연한 황금 빛이고 떫은 맛보다는 순하고 상큼, 신선한 맛이 난다. 레드와인에서 천연 항산화제 역할을 하는 타닌(Tannin)의 함량이 적기 때문에 대부분 장기 보관, 숙성을 하지 않고 시음하는 것이 좋다. 대표적인 화이트와인의 품종으로는 샤르도네(Chardonnay), 쇼비뇽 블랑(Sauvignon Blanc), 리슬링(Riesling), 세미용(Semillon), 피노 그리지오(Pinot Grigio), 게부르츠트라미너(Gewurztraminer), 슈냉 블랑(Chenin Blanc), 무스카트(Muscat), 무스카데(Muscadet), 피노블랑(Pinot Blanc), 뮐러 트루가우(Muller-thurgau) 등이 있다. 화이트와인의 색은 숙성될수록 진해지는데, 처음에는 은빛-녹빛(Yellow-Green)에서 점차 토파즈 빛으로 진행되며 오래되면 오렌지 빛이나 밤색이 도는 구리 빛이 된다. 화이트와인의 색에서 얻을 수 있는 정보는 풍부하지 않지만 갈색은 좋지 않다는 신호로 오래 숙성될수록 색이 진해지는데 갈색으로 변할 단계가 되면 심하게 산화되거나 갈변하여 맛이 없어진다. 대체적으로 색이 옅은 와인은 서늘한 기후에서, 노란색이 짙은 와인은 따뜻한 지역에서 생산된다. 예외적으로 귀부포도로 만든 스위트와인과 오크통에서 숙성시킨 와인은 색이 진하다. 적정 시음 온도는 5~10℃정도로 차게 해서 마시는 것이 좋고, 일반적인 알코올 농도는 10~13%로 레드와인에 비해 약간 낮다. 일반적으로 생선요리나 채소류, 향이 강하지 않은 담백한 요리, 향이 부드러운 치즈와 잘 어울리며 색이 희고 맛과 향이 강하지 않기 때문에 생선요리를 할 때 잡 내를 없애기 위해 화이트 와인을 주로 이용한다. 그러나 음식과의 궁합은 각 와인의 특징에 따라 꼭 정해진 것은 아니며, 레드 와인을 마시기 전에 마시는 것이 보편적이다. 화이트 와인의 잔은 레드와인에 비해 덜 오목한데, 화이트 와인의 맛을 잘 볼 수 있도록 와인이 혀 앞부분에 떨어지도록 하기 위함이다",
            "sweet_content": "와인에서 당도(Sweetness)는 포도과즙이 발효되면서 알코올로 변환되는데 변환되지 않고 남겨진 당도를 잔여 당분이라한다. 주로 화이트 와인에서 이 단어를 자주 사용하게 되는데 와인의 단 맛은 실질적으로 당도가 높아서 나타날 수도 있고, 알코올 도수가 높아서 생기는 것일 수도 있다. 유의해야 할 점으로는 fruity한 (과일향이 나는)것과 sweet한 (단 맛이 나는) 것은 다르다는 점이다. 과일향이 나는것은 화이트 와인의 냄새를 맡았을 때 신선한 과일향이 풍부하게 나면서 과일 특유의 달콤한 냄새들이 기억 속에 저장된 후에 혀로 와인 맛을 보게 되는 과정에서 일어나는 현상이고, 단 맛이 나는 것은 혀로 느껴지는 맛이다.",
            "acidic_content": "와인의 산도(Acidity)는 주로 포도 알갱이에서 찾아볼 수 있는 주석산 (tartaric acid)에 의해 결정된다. 이 산도는 와인에 따라 다르며 레드 와인보다는 화이트 와인의 맛을 평가 할 때 더 자주 사용된다. 화이트 와인이 갖는 산도는 곧 와인 자체의 골격을 상징하기 때문이다. 혀의 양쪽 부분에서 이 산도를 감지하고, 산도가 높은 화이트 와인은 생동감 있고 신선하다는 느낌을 주는 반면에, 산도가 낮은 와인은 밋밋하고 김빠진 듯한 느낌을 준다.",
            "body_content": "와인의 바디(body)란 와인을 마셨을 때 입 안에서 느껴지는 부피감이나 중량감을 의미한다. 당도,산도,타닌 그리고 알코올은 가벼운지 묵직한지를 표현한 와인의 바디에 영향을 준다. 와인을 마실 때마다 느껴지는 '감'에 따라 와인은 '바디가 약한, 중간 정도의 바디, 혹은 바디가 묵직한' 등으로 표현될 수 있다."
        },
        "country": {
            "id": 7,
            "name": "칠레",
            "image": "https://penzim.synology.me/image/finalProject/country/chile-flag-round-icon-128.png"
        },
        "food": [
            {
                "id": 10,
                "name": "해산물",
                "image": "https://penzim.synology.me/image/finalProject/icon/seafood.png"
            }
        ],
        "comment": [],
        "wishlist": []
    }
]

User Login

Method : POST

로그인을 요청합니다.

HTTP Request

https://buenosvinosserver.ga/auth/login

Request body

request URL에서 다음과 같은 Body parameter에 대해 반환 값을 제공합니다.

Parameter Type Description
email string 로그인할 유저의 email을 담습니다
password string 로그인할 유저의 password를 담습니다
google string google social로그인의 경우 반환된 tokenId를 담습니다
kakao string kakao social로그인의 경우 반환된 access_token을 담습니다
facebookId string facebook social로그인의 경우 반환된 id를 담습니다
facebookToken string facebook social로그인 시 반환된 accessToken을 담습니다
※ facebook 로그인 시 facebookId와 facebookToken은 모두 담겨있어야 합니다

Example

Request
https://buenosvinosserver.ga/auth/login
Response

200OK

{
    "userId": 107,
    "nickname": "ant7",
    "wishlist": {
        "id": 107,
        "wishlist": [
            {
                "id": 1,
                "rating": null
            }
        ]
    }
}

400 Bad Request

"아이디와 비밀번호를 입력해 주세요"

401 Unauthorized

"비밀번호를 확인해 주세요"

401 Unauthorized

"존재하지 않는 유저 입니다"

User Logout

Method : GET

로그아웃을 요청합니다

HTTP Request

https://buenosvinosserver.ga/user/logout

Required request headers

Name Value
userId user의 PK ID
Authorization user에 발급된 JWT

Example

Request
https://buenosvinosserver.ga/user/logout
Response

200OK

"성공적으로 로그아웃 되었습니다"

User Sign up

Method : POST

회원가입을 요청합니다.

HTTP Request

https://buenosvinosserver.ga/user

Request body

request URL에서 다음과 같은 Body parameter에 대해 반환 값을 제공합니다.

Parameter Type Description
email string 회원가입할 email을 담습니다
password string 사용할 비밀번호를 담습니다
nickname string 사용할 별명을 담습니다

Example

Request
https://buenosvinosserver.ga/user
Response

200OK

"User created"

409Conflict

"이미 존재하는 별명입니다"

User Info

Method : GET

유저의 정보를 요청합니다.

HTTP Request

https://buenosvinosserver.ga/user

Required request headers

Name Value
userId user의 PK ID
Authorization user에 발급된 JWT

Example

Request
https://buenosvinosserver.ga/user
Response

200OK

{
    "id": 107,
    "email": "test7",
    "nickname": "ant7",
    "comment": [],
    "wishlist": [
        {
            "id": 1,
            "name": "도스코파스 까베르네 소비뇽",
            "name_en": "Dos Copas Cabernet Sauvignon",
            "image": "https://penzim.synology.me/image/finalProject/wine_image/1.png",
            "body": 3,
            "sweet": 1,
            "acidic": 3,
            "alcohol_content": "13",
            "winery": "Bodega y Vinedos de Aguirre S.A.",
            "content": "진한 붉은색을 띠고 검은 과일이 농축된 듯한 진한 향이 느껴진다. 적절한 산미와 힘이 넘치는 탄닌이 절묘한 균형을 만들어 낸다. 그릴에 구운 육류나, 오리 요리, 불고기등과 좋은 궁합을 보여준다. 칠레의 마울레 밸리의 토양은 화산재와 점토질로 이루어져 있으며, 포도밭의 일조량이 좋아 품질 좋은 포도를 생산하기에 안성맞춤이다.",
            "rating_sum": 1433,
            "rating_count": 597,
            "rating": 2.4003350083752095,
            "type": {
                "name": "레드"
            },
            "country": {
                "name": "칠레"
            },
            "food": [
                {
                    "name": "돼지고기"
                },
                {
                    "name": "소고기"
                }
            ]
        }
    ]
}

401 Unauthorized

"권한이 없으신데요?"

Edit User Info

Method : PATCH

유저의 정보를 수정합니다.

HTTP Request

https://buenosvinosserver.ga/user

Required request headers

Name Value
userId user의 PK ID
Authorization user에 발급된 JWT

Request body

request URL에서 다음과 같은 Body parameter에 대해 반환 값을 제공합니다.

Parameter Type Description
nickname string 변경할 user의 nickname을 담습니다

Example

Request
https://buenosvinosserver.ga/user
Response

200OK

"성공적으로 변경되었습니다"

401 Unauthorized

"권한이 없으신데요?"

Change Password

Method : POST

유저의 비밀번호를 변경합니다.

HTTP Request

https://buenosvinosserver.ga/auth/changepw

Required request headers

Name Value
userId user의 PK ID

Request body

request URL에서 다음과 같은 Body parameter에 대해 반환 값을 제공합니다.

Parameter Type Description
oldPassword string 기존 비밀번호를 담습니다
newPassword string 변경할 새 비밀번호를 담습니다

Example

Request
https://buenosvinosserver.ga/auth/changepw
Response

200OK

"비밀번호가 변경되었습니다"

400 Bad Request

[
    {
        "target": {
            "id": 107,
            "email": "test7",
            "nickname": "ant7",
            "password": "1",
            "google": null,
            "facebook": null,
            "kakao": null,
            "createdAt": "2020-12-17T15:58:43.656Z"
        },
        "value": "1",
        "property": "password",
        "children": [],
        "constraints": {
            "length": "password must be longer than or equal to 4 characters"
        }
    }
]

401 Unauthorized

"권한이 없으신데요?"

isLogined

Method : GET

유저의 정보를 요청합니다.

HTTP Request

https://buenosvinosserver.ga/auth

Required request headers

Name Value
Authorization user에 발급된 JWT

Example

Request
https://buenosvinosserver.ga/auth
Response

200OK

"is logined"

401 Unauthorized

"권한이 없으신데요?"

Post Comment

Method : POST

와인에 대한 리뷰를 작성합니다

HTTP Request

https://buenosvinosserver.ga/comment

Required request headers

Name Value
userId user의 PK ID
Authorization user에 발급된 JWT

Request body

request URL에서 다음과 같은 Body parameter에 대해 반환 값을 제공합니다.

Parameter Type Description
wineId integer 리뷰 할 와인의 PK ID
comment string 리뷰 내용
rating number 와인에 대한 평점

Example

Request
https://buenosvinosserver.ga/comment
Response

200OK

"코멘트가 작성되었습니다."

401 Unauthorized

"권한이 없으신데요?"

Patch Comment

Method : PATCH

와인에 대한 리뷰를 수정합니다

HTTP Request

https://buenosvinosserver.ga/comment

Required request headers

Name Value
userId user의 PK ID
Authorization user에 발급된 JWT

Request body

request URL에서 다음과 같은 Body parameter에 대해 반환 값을 제공합니다.

Parameter Type Description
commentId integer 수정할 comment의 PK ID
comment string 리뷰 내용
rating number 와인에 대한 평점

Example

Request
https://buenosvinosserver.ga/comment
Response

200OK

{
    "id": 82,
    "content": "수정된 코멘트",
    "rating": 3,
    "createdAt": "2020-12-20T00:25:36.212Z",
    "wine": {
        "id": 1,
        "name": "도스코파스 까베르네 소비뇽",
        "name_en": "Dos Copas Cabernet Sauvignon",
        "image": "https://penzim.synology.me/image/finalProject/wine_image/1.png",
        "body": 3,
        "sweet": 1,
        "acidic": 3,
        "alcohol_content": "13",
        "winery": "Bodega y Vinedos de Aguirre S.A.",
        "content": "진한 붉은색을 띠고 검은 과일이 농축된 듯한 진한 향이 느껴진다. 적절한 산미와 힘이 넘치는 탄닌이 절묘한 균형을 만들어 낸다. 그릴에 구운 육류나, 오리 요리, 불고기등과 좋은 궁합을 보여준다. 칠레의 마울레 밸리의 토양은 화산재와 점토질로 이루어져 있으며, 포도밭의 일조량이 좋아 품질 좋은 포도를 생산하기에 안성맞춤이다.",
        "rating_sum": 1436,
        "rating_count": 598,
        "createdAt": "2020-12-02T00:00:00.000Z",
        "rating": 2.4013377926421406
    }
}

401 Unauthorized

"권한이 없으신데요?"

Delete Comment

Method : DELETE

와인에 대한 리뷰를 작성합니다

HTTP Request

https://buenosvinosserver.ga/comment

Required request headers

Name Value
userId user의 PK ID
Authorization user에 발급된 JWT

Request body

request URL에서 다음과 같은 Body parameter에 대해 반환 값을 제공합니다.

Parameter Type Description
commentId integer 삭제할 코멘트의 PK ID

Example

Request
https://buenosvinosserver.ga/comment
Response

200OK

"Review is Deleted"

401 Unauthorized

"권한이 없으신데요?"

Add Wishlist

Method : POST

와인을 위시리스트에 추가합니다.

HTTP Request

https://buenosvinosserver.ga/wine/wishlist/id

Required request headers

Name Value
userId user의 PK ID
Authorization user에 발급된 JWT

Request parameters

request URL에서 다음과 같은 Path parameter에 대해 값을 제공합니다.

Parameter Type Description
id integer 와인의PK ID

Example

Request
https://buenosvinosserver.ga/wine/wishlist/id
Response

201 Created

"위시리스트가 추가되었습니다."

401 Unauthorized

"권한이 없으신데요?"

409 Conflict

"이미 위시리스트에 추가된 와인입니다"

Delete Wishlist

Method : DELETE

위시리스트에 담긴 와인을 삭제합니다.

HTTP Request

https://buenosvinosserver.ga/wine/wishlist/id

Required request headers

Name Value
userId user의 PK ID
Authorization user에 발급된 JWT

Request parameters

request URL에서 다음과 같은 Path parameter에 대해 값을 제공합니다.

Parameter Type Description
id integer 와인의PK ID

Example

Request
https://buenosvinosserver.ga/wine/wishlist/id
Response

200OK

"위시리스트가 삭제되었습니다."

401 Unauthorized

"권한이 없으신데요?"

Clone this wiki locally