경매 사이트 참고해서 경매 기능 구현하기로 결정.
-API 작성할 땐, RESTful 규칙 반드시 지킬 것
RESTful 규칙 다시 복습
RESTful API에서 URL(엔드포인트) 설정을 자세히 설명해줄게!
GET, POST, PUT, DELETE)로 표현하면 되므로 URL에는 동사를 포함하지 않는다. ✅ 올바른 예시:
GET /users → 모든 사용자 조회
GET /users/1 → ID가 1인 사용자 조회
POST /users → 새로운 사용자 생성
PUT /users/1 → ID가 1인 사용자 정보 수정
DELETE /users/1 → ID가 1인 사용자 삭제
❌ 잘못된 예시:
GET /getUser/1 → `get` 같은 동사를 쓰면 안 됨
POST /createUser → `create` 같은 동사를 쓰면 안 됨
DELETE /deleteUser/1 → `delete` 같은 동사를 쓰면 안 됨
RESTful API에서는 리소스(컬렉션)과 개별 항목을 URL에서 명확하게 구분해야 해.
| 개념 | URL 예시 |
|---|---|
| 컬렉션(리소스 목록) | /users (사용자 전체 목록) |
| 개별 리소스(하나의 항목) | /users/1 (ID 1번 사용자) |
✅ 올바른 예시:
GET /books → 모든 책 조회
GET /books/123 → ID 123인 책 조회
RESTful에서는 계층적인 관계를 URL 경로로 표현하는 것이 일반적이야.
예를 들어, 특정 사용자의 주문을 조회한다고 해보자.
✅ 올바른 예시:
GET /users/1/orders → ID 1번 사용자의 모든 주문 조회
GET /users/1/orders/10 → ID 1번 사용자의 주문 ID 10번 조회
왜 이렇게 쓰는 걸까?
/users/1 → ID가 1인 사용자를 의미 /users/1/orders → ID 1번 사용자의 주문 목록 /users/1/orders/10 → ID 1번 사용자의 주문 ID 10번 ❌ 잘못된 예시:
GET /getUserOrders?userId=1 → 동사 포함 ❌
GET /user-orders/1 → 비일관적인 네이밍 ❌
쿼리 스트링을 사용해. ✅ 올바른 예시:
GET /books?category=fiction → 카테고리가 "fiction"인 책 조회
GET /books?sort=price_asc → 가격 오름차순 정렬
GET /books?author=Hemingway → 작가가 Hemingway인 책 검색
GET /books?limit=10&offset=20 → 20번째부터 10개 가져오기 (페이징)
❌ 잘못된 예시:
GET /books/sort/price_asc → 리소스처럼 보이지만, 정렬은 동작이므로 ❌
GET /books/category/fiction → 필터링을 리소스처럼 표현하면 ❌
✅ 올바른 예시:
POST /users/1/activate → ID 1번 사용자를 활성화
POST /users/1/deactivate → ID 1번 사용자를 비활성화
❌ 잘못된 예시:
GET /users/1/activate → `GET`은 데이터를 조회할 때 사용해야 함 ❌
이렇게 POST를 사용하는 이유는 상태 변경은 "행위"에 해당하기 때문이야.
예를 들어, 책(book)이 여러 개의 리뷰(review)를 가질 수 있다면:
GET /books/123/reviews → ID 123인 책의 모든 리뷰 조회
GET /books/123/reviews/5 → ID 123인 책의 리뷰 ID 5 조회
예를 들어, 한 사용자가 여러 개의 책을 좋아할 수 있다면:
GET /users/1/favorites → ID 1번 사용자가 좋아하는 책 목록 조회
POST /users/1/favorites/99 → ID 1번 사용자가 ID 99번 책을 좋아요 추가
DELETE /users/1/favorites/99 → ID 1번 사용자가 ID 99번 책 좋아요 취소
✅ 좋은 URL 예시
GET /products → 전체 상품 목록 조회
GET /products/5 → ID가 5인 상품 조회
POST /products → 새 상품 추가
PUT /products/5 → ID 5번 상품 전체 수정
PATCH /products/5 → ID 5번 상품 일부 수정
DELETE /products/5 → ID 5번 상품 삭제
GET /users/1/orders → ID 1번 사용자의 모든 주문 조회
GET /users/1/orders/7 → ID 1번 사용자의 주문 ID 7번 조회
❌ 잘못된 URL 예시
GET /getAllProducts → `GET /products`가 더 RESTful함
POST /addProduct → `POST /products`가 더 RESTful함
DELETE /removeProduct/5 → `DELETE /products/5`가 더 RESTful함
mac에 mysql , redis 설치.
mysql은 예전에 설치하고 intelliJ에 연결이 안돼서 잠시 뒀다가 다시 설정
터미널에 mysql실행 후 비밀번호를 입력해 mysql실행.
인텔리제이에서 아이디랑 비밀번호 입력해서 연결.

Test Connection 위에 드라이버 먼저 다운 받은 후 실행..
redis 는 mac에서 정말 간편하게 설치가 가능했다.
터미널에서
brew install redis
명령어만 입력하면 끝
brew services start redis
그 후 redis 서버 실행해서
redis-cli ping
pong
이라고 뜨면 실행 완료.
그 후 intelliJ에서 redis noAuth로 바로 연결하면 된다.
사실 보안을 위해선 비밀번호 꼭 설정해줘야함.