From d28d0142fa88698345ce7b499ebe277b71f3daba Mon Sep 17 00:00:00 2001 From: SNU-CEE Date: Thu, 22 Sep 2022 20:38:07 +0900 Subject: [PATCH] Add files via upload --- API docs/CreateArticle.md | 136 ++++++++++++++++++ API docs/LoginSignup.md | 281 ++++++++++++++++++++++++++++++++++++++ API docs/boardmake.md | 261 +++++++++++++++++++++++++++++++++++ API docs/comment.md | 63 +++++++++ API docs/post.md | 145 ++++++++++++++++++++ API docs/profile.md | 76 +++++++++++ 6 files changed, 962 insertions(+) create mode 100644 API docs/CreateArticle.md create mode 100644 API docs/LoginSignup.md create mode 100644 API docs/boardmake.md create mode 100644 API docs/comment.md create mode 100644 API docs/post.md create mode 100644 API docs/profile.md diff --git a/API docs/CreateArticle.md b/API docs/CreateArticle.md new file mode 100644 index 0000000..1bb940b --- /dev/null +++ b/API docs/CreateArticle.md @@ -0,0 +1,136 @@ +## 글 쓰기 + +### 요청 + +#### URL + + `POST /boards/{board_id}/articles` + +#### URL 파라미터 + + * `board_id`: 문자열 + +#### 데이터 파라미터 + + * `subject`: 비지 않은 문자열 + * `content`: 문자열 + * `isDraft`: 참/거짓 + +#### 헤더 + * `x-access-token` + +### 성공 시 응답 + +#### 응답 코드 + +201 (Created) + +#### 응답 헤더 + + * `Location`: `/boards/{board_id}/articles/{article_id}` + +#### 응답 인터페이스 예시 + +```typescript +interface CreateArticleResponseSuccess { + article_id: number + board_id: string + writer: string + seq: number + subject: string + content: string + hit: number + isDeleted: boolean + isDraft: boolean + created_at: string + updated_at: string +}; +``` + +#### 응답 예시 + +```json +{ + "article_id": 5615613, + "board_id": "y4pZwF", + "writer": "scsc", + "seq": 1, + "subject": "게시글 제목", + "content": "", + "hit": 0, + "isDeleted": false, + "isDraft": false, + "created_at": "2022-09-01T12:34:56Z", + "updated_at": "2022-09-01T12:34:56Z", +} +``` + +### 실패 시 응답 – 권한 없음 + +#### 조건 + +글을 작성하려는 게시판이 회원만 쓸 수 있는 게시판이고 사용자가 로그인하지 않았을 때, +또는 글을 작성하려는 게시판이 특정 등급의 회원만 쓸 수 있는 게시판이고 사용자가 그 등급에 속하지 않을 때 + +#### 응답 코드 + +200 (OK) + +#### 응답 인터페이스 예시 + +```typescript +interface CreateArticleResponseUnauthorized { + error: { + id: "ERROR_UNAUTHORIZED" + message: string + } +}; +``` + +#### 응답 예시 + +```json +{ + "error": { + "id": "ERROR_UNAUTHORIZED", + "message": "You are unauthorized to make this request." + } +} +``` + +### 호출 예시 + +```typescript +interface CreateArticleRequestBody { + subject: string + content: string + isDraft: boolean +}; + +type CreateArticleResponse = | +| CreateArticleResponseSuccess +| CreateArticleResponseUnauthorized; + +const body: CreateArticleRequestBody = { + subject: '...', + content: '...', + isDraft: true +}; + +fetch(new Request( + `/boards/${boardId}/posts`, { + method: 'POST', + body: new Blob([JSON.stringify(body)], {type: 'application/json'}), + } +)).then( + (response) => response.json() as CreateArticleResponse +).then( + (data) => { + if (data instanceof CreateArticleResponseSuccess) { + console.log(data); + } else if (data instanceof CreateArticleResponseUnauthorized) { + console.log(data.error.message) + } + } +); +``` diff --git a/API docs/LoginSignup.md b/API docs/LoginSignup.md new file mode 100644 index 0000000..98e0fc8 --- /dev/null +++ b/API docs/LoginSignup.md @@ -0,0 +1,281 @@ +# 로그인/회원가입 REST API +- JWT(JSON Web Token) 인증방식을 사용. +- auth API와 user API로 구분. +___ + +## 1. Auth - login +- **Endpoint**: [POST] api/auth/login +- **Description**: username과 password로 API에 로그인, token을 return. +- **Request Example**: +URL: [POST] api/auth/login +Body: + ```ts + { + "username": "test1", + "password": "Password1" + } + ``` +- **Response Example**: + ```ts + { + "success": true, + "message": null, + "errors": null, + "data": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1OThkZGI2MzIyYWMxMDExZTA3MDJjYjAiLCJ1c2VybmFtZSI6InRlc3QxIiwibmFtZSI6InRlc3QxIiwiZW1haWwiOiIiLCJpYXQiOjE1MDQ3MzI2NzcsImV4cCI6MTUwNDgxOTA3N30.4eG2zGpSeY2XezKB4Djf6usy7DdygIybR1VKUBj-ScE" + } + ``` + +## 2. Auth - me +- **Endpoint**: [GET] api/auth/me +- **Description**: token을 받아 token의 주인인 user를 return, header에 x-access-token이 요구됨. +- **Request Example**: +URL: [GET] api/auth/me +Header: + ```ts + { + x-access-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1OThkZGI2MzIyYWMxMDExZTA3MDJjYjAiLCJ1c2VybmFtZSI6InRlc3QxIiwibmFtZSI6InRlc3QxIiwiZW1haWwiOiIiLCJpYXQiOjE1MDQ3MzI2NzcsImV4cCI6MTUwNDgxOTA3N30.4eG2zGpSeY2XezKB4Djf6usy7DdygIybR1VKUBj-ScE + } + ``` + Body: *N/A* + +- **Response Example**: + ```ts + { + "success": true, + "message": null, + "errors": null, + "data": { + "_id": "598ddb6322ac1011e0702cb0", + "username": "test1", + "name": "test1", + "email": "", + "phoneNumber": "", + "admissionYear": "", // 입학년도 + "major": "", // 학과 + "memberType": "", // 회원종류 ex)정회원, 준회원, 명예회원 등 + "iat": 1504732677, //토큰이 발급된 시간 + "exp": 1504819077 // 토큰이 만료된 시간 + } + } + ``` + + +## 3. Auth - refresh +- **Endpoint**: [GET] api/auth/refresh +- **Description**: 기존의 token을 이용하여 새로운 token을 발급, header에 x-access-token이 요구됨. +- **Request Example**: + URL: [GET] api/auth/refresh + Header: + ```ts + { + x-access-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1OThkZGI2MzIyYWMxMDExZTA3MDJjYjAiLCJ1c2VybmFtZSI6InRlc3QxIiwibmFtZSI6InRlc3QxIiwiZW1haWwiOiIiLCJpYXQiOjE1MDQ3MzI2NzcsImV4cCI6MTUwNDgxOTA3N30.4eG2zGpSeY2XezKB4Djf6usy7DdygIybR1VKUBj-ScE + } + ``` + Body: *N/A* +- **Response Example**: + ```ts + { + "success": true, + "message": null, + "errors": null, + "data": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1OThkZGI2MzIyYWMxMDExZTA3MDJjYjAiLCJ1c2VybmFtZSI6InRlc3QxIiwibmFtZSI6InRlc3QxIiwiZW1haWwiOiIiLCJpYXQiOjE1MDQ3MzQxNzUsImV4cCI6MTUwNDgyMDU3NX0.heYRtT1RZJYqgcJDaWwpKEmFUGwLn2r8OyYX-03_Nx4" + } + ``` +___ + +## 4. User - Index +- **Endpoint**: [GET] api/users +- **Description**: user들의 목록을 리턴, header에 x-access-token이 요구됨. +- **Request Example**: + URL: [GET] api/users + Header: + ```ts + { + x-access-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1OThkZGI2MzIyYWMxMDExZTA3MDJjYjAiLCJ1c2VybmFtZSI6InRlc3QxIiwibmFtZSI6InRlc3QxIiwiZW1haWwiOiIiLCJpYXQiOjE1MDQ3MzI2NzcsImV4cCI6MTUwNDgxOTA3N30.4eG2zGpSeY2XezKB4Djf6usy7DdygIybR1VKUBj-ScE + } + ``` + Body: *N/A* +- **Response Example**: + ```ts + { + "success": true, + "message": null, + "errors": null, + "data": [ + { + "_id": "598ddb6322ac1011e0702cb0", + "username": "test1", + "name": "test1", + "__v": 0, + "email": "", + "phoneNumber": "", + "admissionYear": "", + "major": "", + "memberType": "" + }, + { + "_id": "59a748199e6e4e138033c687", + "username": "test2", + "name": "test2", + "email": "", + "__v": 0, + "phoneNumber": "", + "admissionYear": "", + "major": "", + "memberType": "" + } + ] + } + ``` + +## 5. User - Show +- **Endpoint**: [GET] api/users/{username} +- **Description**: username이 {username}인 user를 리턴, header에 x-access-token이 요구됨. +- **Request Example**: + URL: [GET] api/users/test1 + Header: + ```ts + { + x-access-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1OThkZGI2MzIyYWMxMDExZTA3MDJjYjAiLCJ1c2VybmFtZSI6InRlc3QxIiwibmFtZSI6InRlc3QxIiwiZW1haWwiOiIiLCJpYXQiOjE1MDQ3MzI2NzcsImV4cCI6MTUwNDgxOTA3N30.4eG2zGpSeY2XezKB4Djf6usy7DdygIybR1VKUBj-ScE + } + ``` + Body: *N/A* +- **Response Example**: + ```ts + { + "success": true, + "message": null, + "errors": null, + "data": { + "_id": "598ddb6322ac1011e0702cb0", + "username": "test1", + "name": "test1", + "__v": 0, + "email": "", + "phoneNumber": "", + "admissionYear": "", + "major": "", + "memberType": "" + } + } + ``` + +## 6. User - Create +- **Endpoint**: [POST] api/users/ +- **Description**: body에 username, password, passwordConfirmation, name, email, phoneNumber, major를 받아 새로운 user를 생성. +- **Request Example**: + URL: [POST] api/users + Body: + ```ts + { + "username": "test3", + "password": "password1", + "passwordConfirmation": "password1", + "name": "test3", + "email": "", + "phoneNumber": "", + "admissionYear": "", + "major": "", + "memberType": "" + } + ``` +- **Response Example**: + ```ts + { + "success": true, + "message": null, + "errors": null, + "data": { + "__v": 0, + "username": "test3", + "password": "$2a$10$.UAMVa/QcC.8ckk8sDEZXu1KFhNjINNDJZPx4o9tmaR1kmTmst3Be", + "name": "test3", + "email": "", + "phoneNumber": "", + "admissionYear": "", + "major": "", + "memberType": "", + "_id": "59b06d017479637420168a4c" + } + } + ``` + +## 7. User - Update +- **Endpoint**: [PUT] api/users/{username} +- **Description**: body에 currentPassword, username, name, + *(optional) email, phoneNumber, major, newPassword, passwordConfirmation*를 받아 username이 {username}인 user를 수정, header에 x-access-token이 요구됨. +- **Request Example**: + URL: [PUT] api/users/test3 + Header: + ```ts + { + x-access-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1OThkZGI2MzIyYWMxMDExZTA3MDJjYjAiLCJ1c2VybmFtZSI6InRlc3QxIiwibmFtZSI6InRlc3QxIiwiZW1haWwiOiIiLCJpYXQiOjE1MDQ3MzI2NzcsImV4cCI6MTUwNDgxOTA3N30.4eG2zGpSeY2XezKB4Djf6usy7DdygIybR1VKUBj-ScE + + } + ``` + Body: + ```ts + { + "currentPassword": "Password1", + "username": "test3", + "newPassword": "Password1", + "passwordConfirmation": "Password1", + "name": "test5", + "email": "test5@test.com", + "phoneNumber": "", + "major": "" + } + ``` +- **Response Example**: + ```ts + { + "success": true, + "message": null, + "errors": null, + "data": { + "email": "test5@test.com", + "name": "test5", + "username": "test5", + "_id": "59b06d017479637420168a4c", + "password": "$2a$10$oEWKzAadbQsxRCNWV4t2lutx8X2m9XtflMCHkD2jYbZEiiGJzVtsG", + "phoneNumber": "", + "admissionYear": "", + "major": "", + "memberType": "" + } + } + ``` + +## 8. User - Destroy +- **Endpoint**: [DELETE] api/users/{username} +- **Description**: username이 {username}인 user를 삭제, header에 x-access-token이 요구됨. +- **Request Example**: + URL: [PUT] api/users/test3 + Header: + ```ts + { + x-access-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1OThkZGI2MzIyYWMxMDExZTA3MDJjYjAiLCJ1c2VybmFtZSI6InRlc3QxIiwibmFtZSI6InRlc3QxIiwiZW1haWwiOiIiLCJpYXQiOjE1MDQ3MzI2NzcsImV4cCI6MTUwNDgxOTA3N30.4eG2zGpSeY2XezKB4Djf6usy7DdygIybR1VKUBj-ScE + } + ``` + Body: *N/A* +- **Response Example**: + ```ts + { + "success": true, + "message": null, + "errors": null, + "data": { + "_id": "59b06d017479637420168a4c", + "username": "test5", + "name": "test5", + "email": "test5@test.com", + "phoneNumber": "", + "admissionYear": "", + "major": "", + "memberType": "", + "__v": 0 + } + } + ``` + + diff --git a/API docs/boardmake.md b/API docs/boardmake.md new file mode 100644 index 0000000..e5ace34 --- /dev/null +++ b/API docs/boardmake.md @@ -0,0 +1,261 @@ +# 게시판 생성 api + + 게시판 생성 전 권한 확인을 위해 권한을 확인하고, 생성될 게시판에 대한 정보를 저장합니다. + + + 카카오스토리 api문서를 참고하였습니다. 안드로이드용 api라 pc로 변형해야될 부분이 남아있을 수 있어 이에 대한 수정이 필요할 듯 합니다. 또한 게시판을 관리자가 추가하기 쉽도록 가이드라인만드는 것이 필요해 보입니다. + + + ## 사용자 계정 조사 + + 접속한 사용자의 계정이 게시판을 만들 수 있는 권한을 가지고 있는지 확인합니다. + + +### URL + + GET ~/user/userType HTTP/1.1 + Host: + Authorization: + Content-type: + +### URL 파라미터 + + None + +### Data 파라미터 + + Required: + + `userType=[string]` + +### Success Response: + + Code: + + 200 (OK) + + "isQualifiedUser": True + +### Error Response: + + Code: + + 404 NOT FOUND + + { error : "Page doesn't exist" } + +#### OR + + Code: + + 401.1 UNAUTHORIZED + + { error: "권한이 없는 사용자 입니다." } + +### Sample: + + Request + ```javascript + curl -v -X GET "~~/user/userType" \ + -H "Authorization: Bearer ${ACCESS_TOKEN}" + + ``` + + Response + ```javascript + HTTP/1.1 200 OK + Content-Type: application/json;charset=UTF-8 + { + "isQualifiedUser": True + } + ``` + + ## 게시판 작성 내용 전송 + + 사용자가 입력한 내용을 전달합니다. + +### URL + + POST ~/borad/bordmake HTTP/1.1 + Host: + Authorization: + Content-type: + +### Data 파라미터 + + Required: + + boardName=[string], + higherBoard=[string], + readQulify=[string], + writeQulify=[string], + commentQulify=[string] + + not Required: + + boardIntroducion=[string] + +### Success Response: + + #### Code: + 200 (OK) + + id: "[생성된게시판_String_id]" + +### Error Response: + + #### Code: + 404 NOT FOUND + + error : "Page doesn't exist" + + #### OR + + + #### Code: + 406 Not Acceptable + + error: "필수 사항이 부족합니다" + +### Sample: + +Request + ```javascript + curl -v -X POST "~/board/boradmake" \ + -H "Content-Type: \ + -H "Authorization: Bearer ${ACCESS_TOKEN}" \ + --data-urlencode "[게시판이름]" \ + --data-urlencode "[상위게시판]" \ + --data-urlencode "[읽기권한]" \ + --data-urlencode "[쓰기권한]" \ + --data-urlencode "[댓글권한]" \ + --data-urlencode "[게시판소개]" + ``` + +Response + ```javascript + HTTP/1.1 200 OK + Content-Type: application/json;charset=UTF-8 + { + "id":"[만들어질게시판_id]" + } + ``` + +## 게시판 작성 내용 임시 저장 + + 사용자가 입력한 내용을 저장합니다. + + + 게시판 사용자가 만든 내용을 서버에 저장한다면 어디 위치에 저장할지 정해야합니다. 또한 '게시판 만들기' 페이지에서 임시 게시판 불러오기 기능을 추가해야할듯 합니다. 임시로 불러오기 api로 만들어 봤습니다. + +### URL + + POST ~/borad/boardsave HTTP/1.1 + Host: + Authorization: Bearer ${ACCESS_TOKEN} + Content-type: [필요시작성] + +### Data 파라미터 + + not Required: + + boardName=[string], + higherBoard=[string], + readQulify=[string], + writeQulify=[string], + commentQulify=[string], + boardIntroducion=[string] + +### Success Response: + + #### Code: + 200 (OK) + + id: "[생성된게시판_String_id]" + +### Error Response: + + #### Code: + 404 NOT FOUND + + error : "Page doesn't exist" + +### Sample: + +Request + ```javascript + curl -v -X POST "~/board/boradsave" \ + -H "Content-Type: \ + -H "Authorization: Bearer ${ACCESS_TOKEN}" \ + --data-urlencode "boardName=SCSC중고장터" \ + --data-urlencode "higherBoard=홍보/모집" \ + --data-urlencode "readQulify=준회원" \ + --data-urlencode "writeQulify=준회원" \ + --data-urlencode "commentQulify=준회원" \ + --data-urlencode "boardIntroducion=Sell&Buy everyting You want!" + ``` + +Response + ```javascript + HTTP/1.1 200 OK + Content-Type: application/json;charset=UTF-8 + { + "id": "[만들어질게시판_id]" + } + ``` + +## 게시판 임시 작성 내용 불러오기 + + 사용자가 입력한 게시판 내용을 서버에서 불러옵니다. + +### URL + + GET ~/borad/boardload HTTP/1.1 + Host: + Authorization: Bearer ${ACCESS_TOKEN} + +### Data 파라미터 + + id: "[생성된게시판_String_id]" + + +### Success Response: + + #### Code: + 200 (OK) + + boardName=[string], + higherBoard=[string], + readQulify=[string], + writeQulify=[string], + commentQulify=[string], + boardIntroducion=[string] + +### Error Response: + + #### Code: + 404 NOT FOUND + + error : "Page doesn't exist" + +### Sample: + +Request + ```javascript + curl -v -G GET "~/board/boardload" \ + -H "Authorization: Bearer ${ACCESS_TOKEN}" \ + -d "id=${BOARD_ID}" + ``` + +Response + ```javascript + HTTP/1.1 200 OK + Content-Type: application/json;charset=UTF-8 + { + "id":"AAAA.BBBB" + "boardName":"SCSC중고장터" \ + "higherBoard":"홍보/모집" \ + "readQulify":"준회원" \ + "writeQulify":"준회원" \ + "commentQulify":"준회원" \ + "boardIntroducion":"Sell&Buy everyting You want!" + } + ``` \ No newline at end of file diff --git a/API docs/comment.md b/API docs/comment.md new file mode 100644 index 0000000..1feba3c --- /dev/null +++ b/API docs/comment.md @@ -0,0 +1,63 @@ +## 댓글 쓰기 +### 요청 +#### URL + `POST /boards/{board_id}/{article_id}/comments` + +#### 헤더 + * `x-access-token` + +#### data 파라미터 + **Required:** + ` content=[string]` + + **Not Required:** + `parent=[integer]` +
+
+#### 응답 + +**Success ResponseCode:** `201(created)` + + **Content:** + `{id:2, content="abc",parent=1}` + +
+ +**Error Response** + **Code:** `404(Not Found)` + + **Content:**`{error:'no such article or parent comment'}` +
+
+ + **Code:** `200(UnAuthorized)` + + **Content:**`{error:'권한이 없는 사용자입니다.}` + +
+ + **Code:** `400(Bad Request)` + + **Content:**:`{error:'필수 사항이 부족합니다'}` + +## 댓글 삭제하기 +### 요청 +#### URL +`DELETE /comment/{id}` +#### URL 파라미터 + Required:id[integer] + + **Success Response** + **Code**: `204(No content)` +
+ + **Error response** + **code**: `401(Unauthorized)` + **Content:**`{error:'권한이 없는 사용자입니다.}` +
+ + **code**: `404(Not found)` + **content:**`{error:'not found}` + + + diff --git a/API docs/post.md b/API docs/post.md new file mode 100644 index 0000000..49cc727 --- /dev/null +++ b/API docs/post.md @@ -0,0 +1,145 @@ +# 글 + +* 게시판 id를 이용하여 접속 + +## 게시판에서 글 찾기 + +게시글의 제목과 게시글 id, 조회수 목록을 반환 + +### 요청 + +#### URL + + `GET /boards/{board_id}` + +#### URL 파라미터 + +* `board_id`: 문자열 + +#### 데이터 파라미터 + +* `page`: 1 이상의 정수, 기본값 1 +* `page_size`: 1 이상 100 이하의 정수, 기본값 20 + +### 성공 시 응답 + +#### 응답 코드 + +200 (OK) + +#### 응답 인터페이스 예시 + +```typescript +interface FindPostResponseSuccessEntry { + post_id: string + post_name: string + post_hit: number +}; + +interface FindPostResponseSuccess { + documents: FindPostResponseSuccessEntry[] +}; +``` + +#### 응답 예시 + +```json +{ + "documents": [ + { + "post_id": "M2XUa3", + "post_name": "Lorem ipsum", + "post_hit": 12 + }, + { + "post_id": "ohcZjX", + "post_name": "dolor sit amet", + "post_hit": 11 + }, + { + "post_id": "aVgUwg", + "post_name": "consectetur adipiscing elit", + "post_hit": 13 + }, + { + "post_id": "WNUa99", + "post_name": "sed do eiusmod", + "post_hit": 19 + }, + { + "post_id": "4mZsxP", + "post_name": "tempor incididunt", + "post_hit": 8 + }, + ... + ] +} +``` + +### 실패 시 응답 – 권한 없음 + +#### 조건 + +게시판이 회원만 읽을 수 있는 게시판이고 사용자가 로그인하지 않았을 때, +또는 게시판이 특정 등급의 회원만 읽을 수 있는 게시판이고 사용자가 그 등급에 속하지 않을 때 + +#### 응답 코드 + +200 (OK) + +#### 응답 인터페이스 예시 + +```typescript +interface FindPostResponseUnauthorized { + error: { + id: "ERROR_UNAUTHORIZED" + message: string + } +}; +``` + +#### 응답 예시 + +```json +{ + "error": { + "id": "ERROR_UNAUTHORIZED", + "message": "You are unauthorized to make this request." + } +} +``` + +### 호출 예시 + +```typescript +FindPostResponse = | +| FindPostResponseSuccess +| FindPostResponseUnauthorized; + +fetch(new Request( + `/boards/${boardId}?${new URLSearchParams({page: page, page_size: pageSize})}`, +)).then( + (response) => response.json() as FindPostResponse +).then( + (data) => { + if (data instanceof FindPostResponseSuccess) { + console.log(data.documents) + } else if (data instanceof FindPostResponseUnauthorized) { + console.log(data.error.message) + } + } +); +``` + +## 글 보기 + +### 요청 + +#### URL + + `GET /boards/{board_id}/{post_id}` + +#### URL 파라미터 + +* `board_id`: 문자열 +* `post_id`: 문자열 diff --git a/API docs/profile.md b/API docs/profile.md new file mode 100644 index 0000000..4d46f0e --- /dev/null +++ b/API docs/profile.md @@ -0,0 +1,76 @@ +## 프로필 가져오기 +> 현재 로그인한 사용자의 프로필 정보(닉네임, 프로필 이미지)을 불러옵니다. 사용자가 SCSC 홈페이지 회원이 아니라면 오류가 발생합니다. + +------------ +### 요청 +> 요청자가 SCSC 회원인지 확인합니다. + +#### URL +* GET /profile/{id} + +#### URL 파라미터 +* id: 회원 아이디 [string] + +#### 데이터 파라미터 +* username: 닉네임 정보 [string] +* name: 사용자의 실명 [string] +* profileImageUrl: 프로필 이미지 URL [string] +* thumbnailImageUrl: 프로필 썸네일 이미지 URL [string] +* userType: 회원 등급(동아리원, 졸업생, 일반회원) [string] +* email: 사용자의 이메일 주소 [string] + +------------ +### 성공 시 응답 + +#### 응답 코드 및 내용 +* 응답 코드: 200(OK) +* 내용 +``` Javascript +{ + username: [string], + name: [string], + profileImageUrl: [string], + thumbnailImageUrl: [string], + userType: [string], + email: [string] +} +``` + +#### 응답 예시 +``` Javascript +{ + "username": 'GilDong', + "name": '홍길동', + "profileImageUrl": 'https://server_domain/.../aaa.jpeg', + "thumbnailImageUrl": 'https://server_domain/.../bbb.jpeg', + "userType": '동아리원', + "email": 'gildonghong@snu.ac.kr' +} +``` + +------------ +### 실패 시 응답 +> SCSC에 회원가입하지 않았거나, 로그인하지 않은 회원이 접근할 때 오류가 발생합니다. + +#### 응답 코드 및 내용 +* 응답 코드: 401(Unauthorized) +* 내용 +``` Javascript +{ + error: { + id: ERROR_UNAUTHORIZED, + message:[string] + } +} +``` + +#### 응답 예시 +``` Javascript +{ + error: { + id: ERROR_UNAUTHORIZED, + message:'접근 권한이 없습니다.' + } +} +``` +------------