# 주의
앞에 auth 붙은 api들은 전부
`Authorization` Header에 Bearer Token 있어야함
# 유저
## 회원가입
`POST` http://localhost:8081/api/v1/signup
#### request
```
{"userEmail": "daiaasy@swit.io",
"password": "aaa",
"userName": "afe"}
```
#### response
```
{
"userEmail": "daiaasy@swit.io",
"userName": "afe"
}
```
## 로그인
`POST` http://localhost:8081/api/v1/signin
#### request
```
{"userEmail": "daisy@swit.io",
"password": "aaa"}
```
#### response
```
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0aWQiOiJkZmUzZWVmYS1hNzUzLTRkN2EtODFmZS0yYWRlZTdmYjk5ZjkiLCJ1c2VyX2lkIjoiZGFpc3lAc3dpdC5pbyIsInVzZXJfbmFtZSI6IiIsImV4cCI6MTY0NTY4OTM3OC4zNTQzNX0.Bx87CTE6ZOS8p6TtjAaS30pZvgyq6MNZ_srLs8oI4Ck",
"user": {
"userEmail": "daisy@swit.io",
"userName": "afe"
}
}
```
----
# 채널
## 채널 생성
`POST` http://172.32.29.213:8081/api/v1/auth/channel
#### request
```
{
"channelName": "daisy's channel"
}
```
#### response
```
{
"channelId": "1",
"ownerEmail": "daisy@swit.io",
"channelName": "daisy's channel",
"memberList": [
{
"userEmail": "daisy@swit.io",
"userName": "afe",
"userImage": ""
}
],
"createdAt": "2022-02-16 10:07:49",
"lastUpdatedAt": "2022-02-16 10:07:49"
}
```
## 특정 채널 가져오기
`GET` http://172.32.29.213:8081/api/v1/auth/channel?channel_id
로그인이 되어있어야 하지만, 채널에 가입되지 않은 유저도 정보를 받아올 수 있음
(로그인 되어있기만 하면 됨)
#### request
.
#### response
```
{
"channelId": "1",
"ownerEmail": "daiaasy@swit.io",
"channelName": "",
"memberList": [
{
"userEmail": "daiaasy@swit.io",
"userName": "afe",
"userImage": ""
},
{
"userEmail": "daisy@swit.io",
"userName": "afe",
"userImage": ""
}
],
"createdAt": "2022-02-16 10:07:49",
"lastUpdatedAt": "2022-02-16 10:34:12"
}
```
## 채널 전체 목록 가져오기
`GET` http://172.32.29.213:8081/api/v1/auth/channel/list
로그인이 되어있어야 하지만, 모든 유저가 같은 정보를 받음
#### request
.
#### response
값이 다 오긴 하는데, front에서는 channelId랑 channelName만 받아서 저장함
(나머지값은 내다버림)
```
{
"channel": [
{
"channelId": "1",
"ownerEmail": "daisy@swit.io",
"channelName": "a",
"memberList": [],
"createdAt": "2022-02-18 14:45:08",
"lastUpdatedAt": "2022-02-18 14:45:08"
},
{
"channelId": "2",
"ownerEmail": "daisy@swit.io",
"channelName": "b",
"memberList": [],
"createdAt": "2022-02-18 14:45:13",
"lastUpdatedAt": "2022-02-18 14:45:13"
},
...
]
}
```
## 채널 가입하기
`POST` http://172.32.29.213:8081/api/v1/auth/channel/user?channel_id=1
#### request
.
#### response
가입한 채널 정보 전부다 가져옴
```
{
"channelId": "6",
"ownerEmail": "leemir@swit.io",
"channelName": "무야호",
"memberList": [
{
"memberEmail": "daisy@swit.io",
"memberName": "afe",
"memberImage": ""
},
{
"memberEmail": "leemir@swit.io",
"memberName": "afe",
"memberImage": ""
}
],
"createdAt": "2022-02-18 15:28:07",
"lastUpdatedAt": "2022-02-18 15:28:07"
}
```
## 채널 탈퇴하기
`DELETE` http://172.32.29.213:8081/api/v1/auth/channel/user?channel_id=1
- - -
# 메세지 (Rest)
메세지 CUD는 Rest로 보내요
socket :
- 처음 채팅방 진입시에 메세지 목록 주루룩 가져오는거
- 스크롤 끝에 닿았을 때 추가로 메세지 가져오는거
- 다른사람이 메세지 CUD한거에 대한 변경사항
## 메세지 생성
`post` http://localhost:8081/api/v1/auth/message
해당 채널에 속한 유저만 생성 가능
성공시 200
#### request
```
{"channelId": "7",
"contents": "new message"}
```
#### response
(메세지 CUD 모두 동일한 형태의 response)
```
{
"messageId": "2f655359-7b60-4ac5-ab2d-319593234772",
"channelId": "7",
"contents": "new message",
"userEmail": "leemir@swit.io",
"createdAt": "2022-02-23 14:31:49.656 +0900 KST",
"updatedAt": "2022-02-23 14:31:49.656 +0900 KST"
}
```
## 메세지 내용 수정
`patch` http://localhost:8081/api/v1/auth/message
#### request
```
{
"messageId": "2f655359-7b60-4ac5-ab2d-319593234772",
"contents": "hiiiiii"
}
```
#### response
```
{
"messageId": "2f655359-7b60-4ac5-ab2d-319593234772",
"channelId": "7",
"contents": "hiiiiii",
"userEmail": "leemir@swit.io",
"createdAt": "2022-02-23 14:31:49.656 +0900 KST",
"updatedAt": "2022-02-23 14:33:26.149 +0900 KST"
}
```
## 메세지 삭제
`delete` http://localhost:8081/api/v1/auth/message?message_id=2f655359-7b60-4ac5-ab2d-319593234772
#### request
.
#### response
```
{
"messageId": "2f655359-7b60-4ac5-ab2d-319593234772",
"channelId": "7",
"contents": "hiiiiii",
"userEmail": "leemir@swit.io",
"createdAt": "2022-02-23 14:31:49.656 +0900 KST",
"updatedAt": "2022-02-23 14:33:26.149 +0900 KST"
}
```
# 질문
## 내가 소속된 채널 목록 가져오기
> 완료
> http://localhost:8081/api/v1/auth/channel/user
> Authorization Header만 넣어 보내면 됨
> response는 전체 채널 목록 가져오기와 같은 형식
## 채널 목록 가져오기 데이터 형식
```
[
{ "channelId": "1", channelName: "" },
{ "channelId": "2", channelName: "daisy's channel" }
]
```
- 이게 디폴트 아니에요? 일부러 형식을 바꾼거에요??
> 원하시는대로 바꾸어놨습니당
## 메시지 전송
> 메세지 CUD는 Rest로 날리고
> 다른 사람이 메세지 CUD한 변경사항이 socket으로 날아와요
## 메시지 소켓
- 혹시 메시지를 클라이언트로 넘겨줄 때 유저 이름도 같이 넘겨줄 수 있나요~?
> 같이 넘어옵니다!
## memberImage...?
- ...??????
> 구글 로그인시에 프로필이미지를 주길래 넣어놓은건데 일단 무시하셔도 됩니당