User API 문서 - PartyGwam/api GitHub Wiki
기능 : 로그인 및 회원가입, 유저 정보 조회 (프로필이랑 다름)
- POST
/users/login/
- POST
/users/
- GET
/users/
- GET
/users/<uuid>/
- PUT
/users/<uuid>/
- DELETE
/users/<uuid>
- POST
/users/validate/email/
- POST
/users/validate/username/
*
표시가 붙은 URL 은 인증 헤더 필요!
로그인 기능
클라이언트에 요구하는 정보 : 이메일, 비밀번호
토큰 인증 사용!
{
"email": "[email protected]",
"password": "sample_password"
}
성공 시 다음의 데이터와 함께 200 응답을 리턴.
{
"success": true,
"result": {
"token": "c042f0283ca5277091f5f0223079a8451151d739",
"uuid": "36671492-b7bd-4ea2-880b-ea3f8c010e82",
"email": "[email protected]",
"username": "샘플 유저 1",
"profile_picture": "assets/images/image_1513232511950_750.jpg"
},
"message": null
}
실패 시 에러 메시지와 함께 400 응답을 리턴
{
"success": false,
"errors": {
"non_field_errors": [
"이메일 혹은 비밀번호가 잘못되었습니다."
]
}
}
회원가입 기능
클라이언트에 요구하는 정보 : 이메일, 닉네임, 비밀번호
{
"email": "[email protected]",
"username": "sample",
"password": "sample_password"
}
성공 시 다음의 데이터와 함께 201 응답을 리턴.
HTTP 201 코드는 데이터가 생성되었음(created) 을 의미함
{
"success": true,
"result": {
"email": "[email protected]",
"username": "새로운 유저 4",
"token": "da3c5edf6e42941b6dd52b0aa41175ed335f2a50",
"uuid": "cfde09eb-1d5c-4cf7-8a4d-fb7bb11d91cf",
"profile_picture": null
},
"message": null
}
실패 시 실패 사유와 함께 400 에러를 리턴.
실패 사유로는:
- 이메일이나 닉네임이 이미 존재하는 경우
- 닉네임이 너무 긴 경우
- 유효한 이메일 주소가 아닌 경우
- 비밀번호가 형식에 안 맞는, 너무 간단한 비밀번호인 경우
{
"success": false,
"errors": {
"email": [
"유효한 이메일 주소를 입력하십시오."
]
}
}
전체 유저 조회
전체 유저 조회 성공 시 다음의 데이터와 함께 200 응답을 리턴.
- 기본 페이지 단위는 10
- 만약 데이터의 개수가 10개보다 많을 경우, 다음 페이지 활성화
{
"success": true,
"result": {
"count": 22,
"data": [
{
"uuid": "36671492-b7bd-4ea2-880b-ea3f8c010e82",
"email": "[email protected]",
"username": "샘플 유저 1",
"date_joined": "2018-06-27T08:41:54.817125+09:00",
"last_logged_in": "2018-07-01T21:24:48.465996+09:00",
"is_active": true,
"is_admin": false
},
{
"uuid": "6a60b481-d40f-4372-9eff-8ba66f7af378",
"email": "[email protected]",
"username": "홍길동",
"date_joined": "2018-07-06T06:21:51.689530+09:00",
"last_logged_in": "2018-07-06T06:21:51.689575+09:00",
"is_active": true,
"is_admin": false
}
],
"paging": {
"previous": null,
"next": "http://127.0.0.1:8000/api/users/?page=2"
}
},
"message": null
}
유저 조회에 실패하는 경우는 Header 에 인증 토큰이 없기 때문
해당 경우 실패 사유와 함께 401 (Unauthorized, 인증되지 않음) 에러 리턴.
{
"success": false,
"result": null,
"message": {
"detail": "자격 인증데이터(authentication credentials)가 제공되지 않았습니다."
}
}
특정 유저 1 명 조회
유저 상세 조회에 성공 시 다음의 데이터와 함께 200 응답을 리턴.
{
"success": true,
"result": {
"uuid": "6a60b481-d40f-4372-9eff-8ba66f7af378",
"email": "[email protected]",
"username": "홍길동",
"date_joined": "2018-07-06T06:21:51.689530+09:00",
"last_logged_in": "2018-07-06T06:21:51.689575+09:00",
"is_active": true,
"is_admin": false
},
"message": null
}
유저 상세 조회에 실패 시 실패 사유와 함께 다음의 코드 리턴:
- 401 : 인증 토큰이 존재하지 않는 경우
- 403 : 인증 토큰과 사용자가 일치하지 않는 경우 (현재 로그인 된 유저만 상세 조회 가능)
{
"success": false,
"result": null,
"message": {
"detail": "자격 인증데이터(authentication credentials)가 제공되지 않았습니다."
}
}
비밀번호 변경
{
"password": "new_password"
}
비밀번호 변경에 성공하면 204 (No Content) 응답을 리턴. 응답 데이터는 없음!
(보안상의 이유로 이렇게 설정)
비밀번호 변경에 실패하면 실패 사유와 함께 다음의 응답 코드들을 리턴:
- 400 : 비밀번호 형식에 맞지 않는 경우 (너무 짧거나, 너무 단순하거나 등)
- 401 : 인증 토큰이 헤더에 존재하지 않는 경우
- 403 : 인증 토큰과 사용자가 일치하지 않는 경우 (자기 자신의 비밀번호만 변경 가능)
유저 비활성화
없음. 헤더에 토큰 포함해서 보내기만 하면 됨.
유저 비활성화에 성공하면 응답 데이터 없이 204 (No content) 응답을 리턴.
유저 비활성화에 실패하면 실패 사유와 함께 다음의 응답 코드들을 리턴:
- 401 : 인증 토큰이 헤더에 존재하지 않는 경우
- 403 : 인증 토큰과 사용자가 일치하지 않는 경우 (자기 자신의 비밀번호만 변경 가능)
이메일 실시간 검증
{
"email": "[email protected]"
}
이메일 검증에 성공하면 다음의 데이터와 함께 200 응답을 리턴
{
"success": true,
"result": {
"email": "[email protected]"
},
"message": null
}
이메일 검증에 실패하면 실패 사유와 함께 400 응답을 리턴.
{
"success": false,
"result": null,
"message": {
"email": [
"유저의 이메일은/는 이미 존재합니다."
]
}
}
닉네임 실시간 검증
{
"username": "string"
}
닉네임 검증에 성공하면 다음의 데이터와 함께 200 응답을 리턴
{
"success": true,
"result": {
"username": "string"
},
"message": null
}
닉네임 검증에 실패하면 실패 사유와 함께 400 응답을 리턴
{
"success": false,
"result": null,
"message": {
"username": [
"유저의 닉네임은/는 이미 존재합니다."
]
}
}