# USER API

## 회원가입

<mark style="color:green;">`POST`</mark> `https://Yeollin-jib/user/signup`

일반 회원가입

#### Request Body

| Name                                       | Type   | Description   |
| ------------------------------------------ | ------ | ------------- |
| nickname<mark style="color:red;">\*</mark> | String | user nickname |
| email<mark style="color:red;">\*</mark>    | String | user email    |
| password<mark style="color:red;">\*</mark> | String | user password |

{% tabs %}
{% tab title="201: Created 회원가입 성공" %} <img src="https://1863515620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB1Q97Frgb6lsOVPvauMx%2Fuploads%2FyXeKG3gbNwGU6xuiGGkn%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-10-24%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2010.18.51.png?alt=media&#x26;token=bb85b15a-c7a3-4318-a3ce-87b3e1d86799" alt="" data-size="original">

```javascript
{       
         "userId": 1,
         "nickname": "김코딩",
         "email": "kimcoding@gmail.com",
         "message": "회원가입이 완료되었습니다"
}
```

{% endtab %}

{% tab title="400: Bad Request 필수 항목 정보 부족" %}

```javascript
{ "message": "필수 항목이 모두 채워지지않았습니다. 다시 한번 확인해주세요." }
```

{% endtab %}

{% tab title="501: Not Implemented 서버 에러" %}

```javascript
{ "message": "서버 에러 입니다." }
```

{% endtab %}
{% endtabs %}

## 로그인         &#x20;

<mark style="color:green;">`POST`</mark> `https://Yeollin-jib/user/login`

#### Request Body

| Name                                       | Type   | Description   |
| ------------------------------------------ | ------ | ------------- |
| email<mark style="color:red;">\*</mark>    | String | user email    |
| password<mark style="color:red;">\*</mark> | String | user password |

{% tabs %}
{% tab title="200: OK 로그인 성공" %}
![](https://1863515620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB1Q97Frgb6lsOVPvauMx%2Fuploads%2FUgExZ5XlSc9yMduqYD9b%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-10-24%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%205.26.05.png?alt=media\&token=650efdf2-5d08-44b5-8591-4d74fac9986d)

```javascript

    "accessToken": accessToken,
    "id": 1,
    "message": "로그인에 성공하였습니다."
}
```

{% endtab %}

{% tab title="404: Not Found 회원을 찾을 수 없음" %}

```javascript
{
    "message": "회원을 찾을수 없습니다."
}
```

{% endtab %}

{% tab title="403: Forbidden 잘못된 비밀번호" %}

```javascript
{
    "message": "잘못된 비밀번호입니다."
}
```

{% endtab %}

{% tab title="417: Expectation Failed 로그인 정보 부족" %}

```javascript
{ "message": "필수 항목이 모두 채워지지않았습니다. 다시 한번 확인해주세요." }
```

{% endtab %}

{% tab title="501: Not Implemented 서버 에러" %}

```javascript
{ "message": "서버 에러 입니다." }
```

{% endtab %}
{% endtabs %}

## 로그아웃

<mark style="color:green;">`POST`</mark> `https://Yeollin-jib/user/logout`

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| Authorization<mark style="color:red;">\*</mark> | String |             |

{% tabs %}
{% tab title="200: OK 로그아웃 성공" %}
![](https://1863515620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB1Q97Frgb6lsOVPvauMx%2Fuploads%2FUrlv6CFZVm8ggxwzrd1Q%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-10-24%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2010.19.20.png?alt=media\&token=d0cb5f9a-b728-48e1-9910-71642ae766a7)

```javascript
{
    "message": "로그아웃 되었습니다."
}
```

{% endtab %}

{% tab title="401: Unauthorized 이미 로그아웃됨" %}

```javascript
{
    "message": "이미 로그아웃 되었습니다."
}
```

{% endtab %}

{% tab title="501: Not Implemented 서버 에러" %}

```javascript
{ "message": "서버 에러 입니다." }
```

{% endtab %}
{% endtabs %}

## kakao 로그인

<mark style="color:blue;">`GET`</mark> `https://Yeollin-jib/user/login/kakao`

## google 로그인

<mark style="color:blue;">`GET`</mark> `https://Yeollin-jib/user/login/google`

구글 로그인 페이지로 연결됩니다.

![](https://1863515620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB1Q97Frgb6lsOVPvauMx%2Fuploads%2F9UJY6W1XhLgbl2hfvHqZ%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-10-26%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%206.15.47.png?alt=media\&token=bbd3a710-1cd6-48e6-8a8c-97ec26b1d4c0)

## kakao callback

<mark style="color:blue;">`GET`</mark> `https://Yeollin-jib/user/kakao/callback`

## google callback

<mark style="color:blue;">`GET`</mark> `https://Yeollin-jib/user/google/callback`

구글 로그인한 정보의 이메일로&#x20;

데이터베이스에 존재유무를 찾고 존재하지 않으면 데이터베이스에 유저정보를 저장합니다.

구글 로그인 할 시에는 초기 닉네임으로 이메일 아이디가 보여집니다.

{% tabs %}
{% tab title="200: OK 소셜 로그인 성공" %}
![](https://1863515620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB1Q97Frgb6lsOVPvauMx%2Fuploads%2Fc05e99DG4yOoKaC0Md6b%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-10-26%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%206.12.35.png?alt=media\&token=ea6dc584-6dfd-4597-a684-1da73021cae3)

```javascript
{
  "accessToken": accessToken,
  "id": 1,
  "message": "소셜 로그인에 성공하였습니다."
}
```

{% endtab %}
{% endtabs %}

## 유저 정보 요청

<mark style="color:blue;">`GET`</mark> `https://Yeollin-jib/user`

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| Authorization<mark style="color:red;">\*</mark> | String | AccessToken |

{% tabs %}
{% tab title="200: OK 응답 성공" %}
![](https://1863515620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB1Q97Frgb6lsOVPvauMx%2Fuploads%2F9wqQeM9e0yQLkskxiwqe%2Fimage.png?alt=media\&token=e956ce97-c480-4624-bed2-197c40adf08b)

```javascript
{
    "data": {
        "id": 1,
        "email": "kim@gmail.com",
        "nickname": "김코딩",
        "userArea": null,
        "imagePath": null
    },
    "myComment": 2,
    "myPost": 3,
    "myStorage": 0
}
```

{% endtab %}

{% tab title="404: Not Found 유저가 존재하지 않음" %}

```javascript
{
    "message": "해당 유저를 찾을 수 없습니다."    
}
```

{% endtab %}

{% tab title="501: Not Implemented 서버 에러" %}

```javascript
{ "message": "서버 에러 입니다." }
```

{% endtab %}
{% endtabs %}

## 닉네임 중복

<mark style="color:blue;">`GET`</mark> `https://Yeollin-jib/user/nickname?nickname={nickname}`

영문 대소문자는 동일하게 취급합니다.

#### Query Parameters

| Name                                       | Type   | Description   |
| ------------------------------------------ | ------ | ------------- |
| nickname<mark style="color:red;">\*</mark> | String | user nickname |

{% tabs %}
{% tab title="200: OK 닉네임이 중복되지 않음" %}
![](https://1863515620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB1Q97Frgb6lsOVPvauMx%2Fuploads%2FxC7kWe8Rbv8DR7qpsBYa%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-10-24%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.43.04.png?alt=media\&token=79e32872-a7e6-4220-b6db-aa52c11fce89)

```javascript
{
    "message": "사용할 수 있는 닉네임입니다."
}
```

{% endtab %}

{% tab title="200: OK 닉네임이 중복됨" %}
![](https://1863515620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB1Q97Frgb6lsOVPvauMx%2Fuploads%2FHgL9Gz7TXSr0cBM5JHRX%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-10-24%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.42.56.png?alt=media\&token=58416884-c1b4-4ce6-93d7-e121272720c2)

```javascript
{
    "message": "닉네임이 중복됩니다."
}
```

{% endtab %}

{% tab title="501: Not Implemented 서버 에러" %}

```javascript
{ "message": "서버 에러 입니다." }
```

{% endtab %}
{% endtabs %}

## 이메일 중복

<mark style="color:blue;">`GET`</mark> `https://Yeollin-jib/user/email?email={email}`

#### Query Parameters

| Name                                    | Type   | Description |
| --------------------------------------- | ------ | ----------- |
| email<mark style="color:red;">\*</mark> | String | user email  |

{% tabs %}
{% tab title="200: OK 이메일이 중복되지 않음" %}
![](https://1863515620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB1Q97Frgb6lsOVPvauMx%2Fuploads%2Fe7l0qotNvOq1r7Md2yhf%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-10-24%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.44.14.png?alt=media\&token=b413897b-94ac-44e8-ba10-6e697fe2666b)

```javascript
{
    "message": "사용할 수 있는 이메일입니다."
}
```

{% endtab %}

{% tab title="200: OK 이메일이 중복됨" %}
![](https://1863515620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB1Q97Frgb6lsOVPvauMx%2Fuploads%2FjIqRKmBBSXISH7fo1qJa%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-10-24%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.43.38.png?alt=media\&token=49793424-8c49-4707-9b42-dac72b9610f2)

```javascript
{
    "message": "이메일이 중복됩니다."
}
```

{% endtab %}

{% tab title="501: Not Implemented 서버 에러" %}

```javascript
{ "message": "서버 에러 입니다." }
```

{% endtab %}
{% endtabs %}

## 유저 프로필 변경

<mark style="color:purple;">`PATCH`</mark> `https://Yeollin-jib/user`

유저 프로필 정보 수정

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| Authorization<mark style="color:red;">\*</mark> | String | AccessToken |

#### Request Body

| Name      | Type      | Description                              |
| --------- | --------- | ---------------------------------------- |
| nickname  | String    | user nickname                            |
| ImagePath | Multipart | multipart/form-data / user profile photo |
| password  | String    | user password                            |
| userArea  | String    | user area                                |

{% tabs %}
{% tab title="200: OK 회원정보 수정 성공" %}
![](https://1863515620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB1Q97Frgb6lsOVPvauMx%2Fuploads%2FMQ70qx3cGy5OIGkMiOXj%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-10-25%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.53.55.png?alt=media\&token=358b3e8e-c9a8-4bfa-bf57-1d2004fd4634)

```javascript
{
    "message": "정보 수정이 완료되었습니다"
}
```

{% endtab %}

{% tab title="403: Forbidden 잘못된 요청" %}

```javascript
{
    "message": "잘못된 요청입니다."    
}
```

{% endtab %}

{% tab title="501: Not Implemented 서버 에러" %}

```javascript
{ "message": "서버 에러 입니다." }
```

{% endtab %}
{% endtabs %}

## 프로필 사진 삭제

<mark style="color:red;">`DELETE`</mark> `https://Yeollin-jib/user/photo`

body로 imagePath라는 키값이 들어오면 db값을 null로 바꾸는 방식

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| Authorization<mark style="color:red;">\*</mark> | String | AccessToken |

#### Request Body

| Name                                        | Type   | Description |
| ------------------------------------------- | ------ | ----------- |
| imagePath<mark style="color:red;">\*</mark> | String |             |

{% tabs %}
{% tab title="200: OK 사진 삭제 성공" %}
![](https://1863515620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB1Q97Frgb6lsOVPvauMx%2Fuploads%2FkSRmitds3G2ABzvFAP7l%2Fimage.png?alt=media\&token=8d142d6f-74ab-461b-9860-9e36abc2dd98)

```javascript
{
    "message": "사진 삭제가 완료되었습니다."
}
```

{% endtab %}

{% tab title="403: Forbidden 잘못된 요청" %}

```javascript
{ 
   "message": "잘못된 요청입니다." 
}
```

{% endtab %}

{% tab title="501: Not Implemented 서버 에러" %}

```javascript
{ "message": "서버 에러 입니다." }
```

{% endtab %}
{% endtabs %}

## 회원탈퇴

<mark style="color:red;">`DELETE`</mark> `https://Yeollin-jib/user`

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| Authorization<mark style="color:red;">\*</mark> | String | AccessToken |

{% tabs %}
{% tab title="200: OK 회원 탈퇴 성공" %}
![](https://1863515620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB1Q97Frgb6lsOVPvauMx%2Fuploads%2FwEHxUw1sN1aIWr2TK87W%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-10-24%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%205.16.46.png?alt=media\&token=47c7abc4-3d21-4f51-80c8-a0bad99b49c2)

```javascript
{
    "message": "회원탈퇴가 완료 되었습니다."
}
```

{% endtab %}

{% tab title="403: Forbidden 잘못된 요청" %}

```javascript
{ 
   "message": "잘못된 요청입니다." 
}
```

{% endtab %}

{% tab title="501: Not Implemented 서버 에러" %}

```javascript
{ "message": "서버 에러 입니다." }
```

{% endtab %}
{% endtabs %}
