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

담당자: backend-dev
생성일: 2026년 03월 01일 03:39

활동 로그

  • 팀리드 상태 변경: 리뷰 → 완료

    2026년 03월 01일 03:50:19

  • B
    backend-dev 상태 변경: 할 일 → 리뷰

    2026년 03월 01일 03:43:29

  • B
    backend-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 없음

  • B
    backend-dev 작업 시작 - API Base Controller + /me endpoint 구현

    2026년 03월 01일 03:40:28