헬스 서비스 개발일지 #3
대략적인 요구사항 분석과 DB 설계도 끝냈으니 이를 바탕으로 REST API를 설계하려고 한다.
HTTP Response Status code는 일단 생략한다.
REST API Document
User
- 회원 등록
POST /users
Request
{
"userId": "test@naver.com",
"nickname": "test",
"password": "asdf...", // encoded SHA-256
"email": "test@naver.com"
}
Response
{
"isSuccess": true,
"message": null,
"data": {
"userNum": 1
}
}
- 회원 정보 수정
PUT /users/{userNum}
Request
{
"nickname": "asdf",
"password": "asdfasf..",
"email": "test@daum.net"
}
Response
{
"isSuccess": true,
"message": null,
"data": null
}
- 회원 탈퇴
DELETE /users/{userNum}
Header
{
"x-access-token": "asdfefdf~"
}
Response
{
"isSuccess": true,
"message": null,
"data": null
}
- 로그인
POST /auth/login
Request
{
"userId": "test@naver.com",
"password": "asdfasdf" // encoded SHA-256
}
Response
{
"isSuccess": true,
"message": null,
"data": {
"token": "IEmeifeif~~"
}
}
- 로그아웃
DELETE /auth/logout/{userNum}
Header
{
"x-access-token": "IEmeifeif~~"
}
Response
{
"isSuccess": true,
"message": null,
"data": null
}
Exercise
- 운동 등록
POST /exercises
Request
{
"exerciseName": "bench press",
"exerciseTypeId": 1,
"bodyPartId": 1
}
Response
{
"isSuccess": true,
"message": null,
"data": null
}
- 운동 수정
PUT /exercises/{exerciseId}
Request
{
"exerciseName": "change",
"exerciseTypeId": 2,
"bodyPartId": 2
}
Response
{
"isSuccess": true,
"message": null,
"data": null
}
- 운동 조회
GET /exercises/{exerciseId}
Response
{
"isSuccess": true,
"message": null,
"data": null
}
- 운동 삭제
DELETE /exercises/{exerciseId}
Response
{
"isSuccess": true,
"message": null,
"data": null
}
- 수행한 운동 등록
POST /users/{userNum}/exercises/{exerciseId}
Request
{
"date": "2021-05-27 15:00:00",
"exerciseCount": 10,
"setCount": 3
}
Response
{
"isSuccess": true,
"message": null,
"data": null
}
- 수행한 운동 수정
PUT /users/{userNum}/exercises/{exercisesId}
Request
{
"exerciseCount": 12,
"setCount": 5
}
Response
{
"isSuccess": true,
"message": null,
"data": null
}
- 수행한 운동 조회
GET /users/{userNum}/exercises/{exercisesId}
Response
{
"isSuccess": true,
"message": null,
"data": {
"exerciseName": "bench press",
"exerciseCount": 12,
"date": "2021-05-27 15:00:00",
"setCount": 4,
"exerciseTypeId": 1,
"bodyPartId": 3
}
}
- 수행한 운동 전체 조회
GET /users/{userNum}/exercises
Response
{
"isSuccess": true,
"message": null,
"data": {
"exercises" : [
{
"exerciseName": "bench press",
"exerciseCount": 12,
"date": "2021-05-27 15:00:00",
"setCount": 4,
"exerciseTypeId": 1,
"bodyPartId": 3
},
{
...
}
]
}
}
- 수행한 운동 삭제
DELETE /users/{userNum}/exercises/{exerciseId}
Response
{
"isSuccess": true,
"message": null,
"data": null
}
Routine
- 루틴 등록
POST /users/{userNum}/routines
Request
{
"routineName": "hi",
"dayOfWeek": 4
}
Response
{
"isSuccess": true,
"message": null,
"data": null
}
- 루틴 수정
PUT /users/{userNum}/routines/{routineId}
Request
{
"routineName": "change",
"dayOfWeek": 3
}
Response
{
"isSuccess": true,
"message": null,
"data": null
}
- 루틴 조회
GET /users/{userNum}/routines/{routineId}
Response
{
"isSuccess": true,
"message": null,
"data": {
"routineName": "test",
"dayOfWeek": 3
}
}
- 전체 루틴 조회
GET /users/{userNum}/routines
Response
{
"isSuccess": true,
"message": null,
"data": {
"routines": [
{
"routineName": "test",
"dayOfWeek": 3
},
{
...
}
]
}
}
- 루틴 삭제
DELETE /users/{userNum}/routines/{routineId}
Response
{
"isSuccess": true,
"message": null,
"data": null
}
대략적인 API여서 아마 지속적으로 수정될 것 같다.
이를 목표로 2차 마일스톤 때 개발 진행해보자.
Leave a comment