API Base Controller + routes + /me endpoint
ID: 6ad0dfb0-2248-414d-ae48-d4bf1558ebab
## 작업 내용
1. `Api::V1::BaseController` 생성 (`app/controllers/api/v1/base_controller.rb`):
- `ActionController::API` 상속
- `before_action :doorkeeper_authorize!`
- JSON 에러 핸들링 (401, 403, 404, 422)
- `current_resource_owner` 헬퍼 (doorkeeper token → User)
2. `config/routes.rb`에 API namespace 추가:
```ruby
namespace :api do
namespace :v1 do
resource :me, only: [:show], controller: 'profiles'
resources :users, only: [] do
resource :diagnoses, only: [:show], module: 'users'
resource :strength_profile, only: [:show], module: 'users'
end
end
end
```
3. `Api::V1::ProfilesController` 생성 (`GET /api/v1/me`):
- doorkeeper scope: `:profile`
- 현재 토큰 소유자의 프로필 반환
- 응답: id, email, name, locale, role, email_verified_at, created_at
4. CORS 설정 (rack-cors gem 또는 수동):
- API 경로만 CORS 허용
## 참고 파일
- `app/models/user.rb` — User 모델 구조 확인
- `config/initializers/doorkeeper.rb` — 스코프 설정 확인
- `config/routes.rb` — 기존 라우트 확인
## 완료 기준
- GET /api/v1/me가 Bearer 토큰으로 동작
- 토큰 없이 요청 시 401 응답
- JSON 에러 핸들링 동작
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 상태 변경: 리뷰 → 완료
2026년 03월 01일 03:50:19
-
Bbackend-dev 상태 변경: 할 일 → 리뷰
2026년 03월 01일 03:43:29
-
Bbackend-dev API Base Controller + /me endpoint 구현 완료
2026년 03월 01일 03:43:29
상세 보기
## 변경 사항
### 신규 파일
- `app/controllers/api/v1/base_controller.rb` — API 기본 컨트롤러
- `ActionController::API` 기반 (세션/CSRF 없음)
- `doorkeeper_authorize!` 인증
- JSON 에러 핸들링 (RecordNotFound, DoorkeeperError)
- `doorkeeper_unauthorized_render_options` / `doorkeeper_forbidden_render_options` 오버라이드
- `current_resource_owner` 헬퍼 메서드
- `app/controllers/api/v1/profiles_controller.rb` — GET /api/v1/me
- `profile` 스코프 필수
- 응답: id, email, name, locale, role, email_verified_at, created_at
- `config/initializers/cors.rb` — CORS 설정
- `/api/*` 경로만 모든 origin 허용
- `test/controllers/api/v1/base_controller_test.rb` — Base 컨트롤러 테스트 (2개)
- `test/controllers/api/v1/profiles_controller_test.rb` — Profiles 컨트롤러 테스트 (6개)### 수정 파일
- `Gemfile` — `rack-cors` gem 추가
- `config/routes.rb` — `namespace :api / :v1` 추가 (me, users/diagnoses, users/strength_profile)### 라우트
| Method | Path | Controller#Action |
|--------|------|-------------------|
| GET | /api/v1/me | api/v1/profiles#show |
| GET | /api/v1/users/:user_id/diagnoses | api/v1/users/diagnoses#show |
| GET | /api/v1/users/:user_id/strength_profile | api/v1/users/strength_profiles#show |### 테스트 결과
- API 테스트 8개 + 기존 doorkeeper 테스트 20개 = 28개 모두 통과
- 기존 테스트 regression 없음 -
Bbackend-dev 작업 시작 - API Base Controller + /me endpoint 구현
2026년 03월 01일 03:40:28