본문으로 건너뛰기

도메인 API 가이드

이 문서로 해결할 질문

  • Producer 도메인 모듈별 엔드포인트와 DB 사용은 무엇인가요?
  • 인증이 필요한 API는 무엇인가요?
  • 쓰기 API의 Kafka 연동은 무엇인가요?

API 계약은 Producer APIOpenAPI 레퍼런스를 참고하세요.

모듈 요약

모듈DB인증Kafka 발행
authPostgreSQLlogin, signup → user-events
usersPostgreSQL + RedisJWTnickname → user-events
recipesPostgreSQL + Redis혼합views, search → activity-events
ingredientsPostgreSQL + Redis공개 조회
inventoryMongoDB + RedisJWTCRUD → user-events
chatbotMongoDB(조회)JWTmessages → chatbot-requests

auth

MethodPath설명
GET/api/v1/auth/{provider}Provider 인증 URL로 302
GET/api/v1/auth/{provider}/callbackCode 교환 → JWT 쿠키 → 프론트 302
POST/api/v1/auth/refreshRefresh 회전 → 새 쿠키
POST/api/v1/auth/logout쿠키 삭제 + 세션 revoke

인증/인가를 참고하세요.

users

MethodPath인증설명
GET/api/v1/users/meJWT프로필 조회
PATCH/api/v1/users/me/nicknameJWT닉네임 변경 (user-events)
GET/api/v1/users/me/activitiesJWT활동 내역 (MongoDB EventLog)

recipes (조회·검색·이벤트)

MethodPath인증비고
GET/api/v1/recipes선택목록
GET/api/v1/recipes/recommended필수개인화 추천
GET/api/v1/recipes/{recipeId}공개상세
GET/api/v1/recipes/search공개검색
GET/api/v1/recipes/categories공개카테고리 목록
GET/api/v1/recipes/static-ids공개ISR static params
POST/api/v1/recipes/{recipeId}/views선택조회 이벤트
POST/api/v1/recipes/search-queries선택검색어 이벤트
POST/api/v1/recipes/{recipeId}/search-clicks선택검색 클릭

추천 API를 참고하세요.

ingredients

MethodPath인증설명
GET/api/v1/ingredients/search공개재료 검색
GET/api/v1/ingredients/categories공개재료 카테고리

inventory

MethodPath설명
GET/api/v1/users/me/inventory보관함 전체 조회
GET/api/v1/users/me/favorite-recipes/ids관심 레시피 ID만 조회
PUT/api/v1/users/me/inventory/ingredients/owned보유 재료 전체 교체
POST/api/v1/users/me/inventory/ingredients/owned보유 재료 추가
DELETE/api/v1/users/me/inventory/ingredients/owned/{ingredientId}보유 재료 삭제
PUT/api/v1/users/me/inventory/ingredients/favorites관심 재료 전체 교체
POST/api/v1/users/me/inventory/ingredients/favorites관심 재료 추가
DELETE/api/v1/users/me/inventory/ingredients/favorites/{ingredientId}관심 재료 삭제
POST/api/v1/users/me/inventory/recipes/favorites관심 레시피 추가
DELETE/api/v1/users/me/inventory/recipes/favorites/{recipeId}관심 레시피 삭제

쓰기가 성공하면 user-events가 발행되고, Consumer가 Inventory 갱신, 추천 점수 반영, 캐시 무효화를 처리합니다.

chatbot

MethodPath설명
POST/api/v1/chatbot/messages메시지 전송 + SSE 스트림 응답 (text/event-stream)
GET/api/v1/chatbot/conversations대화 목록
GET/api/v1/chatbot/conversations/{id}대화 상세

챗봇/SSE를 참고하세요.

공통 규칙

  • 읽기: Cache-Aside(Redis)를 우선하고 miss 시 DB로 폴백합니다.
  • 쓰기: HTTP 200은 Kafka 발행 성공을 의미하며, DB 최종 반영은 Consumer가 처리합니다.
  • Rate Limit: Redis 기반이며 server/producer/.../rate-limit.middleware.ts에서 적용합니다.
  • 에러: OpenAPI ErrorResponse 스키마를 따릅니다.

관련 문서