Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

부산대 BE 진서현 5주차 3단계 #370

Open
wants to merge 56 commits into
base: jinseohyun1228
Choose a base branch
from

Conversation

jinseohyun1228
Copy link

Readme에 기능 문서를 두엇다. 그런데, 부족한 부분이 있어서 기능추가가 필요할 것 같다..!

API 문서

  • 모든 URL 형식은 http://localhost:8080/spring-gift 로시작합니다.
  • spring-gift 가 제공하는 기능은 회원가입, 제품, 카테코리, 옵션 CRUD와 위시리스트만들기, 주문기능이 있습니다.

유저 관련 API

제목 메서드/URL 엔드포인트 요청 컨텐트 타입 / 요청 객체 응답객체 설명
회원가입 API POST /members/join Content-Type: application/json
Body: UserJoinRequest
header: {"Authorization": "Bearer {token}" } Body: { "redirectUrl": "/spring-gift"}
로그인 API POST /members/login Content-Type: application/json
Body: UserLoginRequest
header: {"Authorization": "Bearer {token}" } Body: { "redirectUrl": "/spring-gift"}

카카오 로그인 API

제목 메서드/URL 엔드포인트 요청 컨텐트 타입 / 요청 객체 응답객체 설명
카카오 로그인 화면 요청 GET /kakao/login - Redirect to Kakao Login URL 클라이언트가 이 URL로 요청하면 카카오 로그인 화면으로 리다이렉트됩니다. 응답이 다른 URL (/kakao/login/callback)로 전달됩니다.
카카오 로그인 및 토큰 처리 GET /kakao/login/callback Query Parameters: code Status: 201 Created
Body: "successfully LoggedIn"
카카오 서버에서 리다이렉트된 코드를 사용하여 사용자를 로그인 처리하고 JWT 토큰을 반환합니다.
  • 프론트에서 토큰 처리 메서드로 요청하실 필요는 없습니다. 다만 응답을 callback에서 받습니다.

제품 등록,수정,삭제 API

제목 메서드/URL 엔드포인트 요청 컨텐트 타입 / 요청 객체 응답객체 설명
제품 등록 POST /admin/product Content-Type: application/json
Body: ProductAllRequest
Status: 200
Body: "Product added successfully"
제품 정보 업데이트 PUT /admin/product/{id} Content-Type: application/json
Body: ProductRequest
Status: 200
Body: "Product updated successfully"
제품 삭제 DELETE /admin/product/{id} Content-Type: application/json
Path Variable: id (Long)
Status: 200
Body: "Product deleted successfully"
  • 현재 권한 검사가 일어나지는 않지만, 이후 권한을 두어 추가할 예정입니다.
  • 제품을 조회하거나 볼 수 있는 기능은 아래 따로 두었습니다.

제품,옵션 조회 API

제목 메서드/URL 엔드포인트 요청 컨텐트 타입 / 요청 객체 응답객체 설명
제품 목록 페이지 조회 GET /products - Status: 200 OK
Body: Page of ProductResponce
페이지네이션을 이용한 제품 목록을 반환합니다.
특정 제품 조회 GET /product/{id} - Status: 200 OK
Body: ProductResponce
제품 ID에 해당하는 상세 제품 정보를 반환합니다.
제품 옵션 조회 GET /product/{id}/options - Status: 200 OK
Body: ProductAllResponse
제품 ID에 해당하는 제품과 그 옵션들의 상세 정보를 반환합니다.

카테고리 관련 API

제목 메서드/URL 엔드포인트 요청 컨텐트 타입 / 요청 객체 응답객체 설명
카테고리 생성 POST /admin/category Content-Type: application/json
Body: CategoryRequest
Status: 201 Created
Body: "Category created successfully"
카테고리 업데이트 PUT /admin/category/{id} Content-Type: application/json
Body: CategoryRequest
Status: 200 OK
Body: "Category updated successfully"
카테고리 삭제 DELETE /admin/category/{id} Content-Type: application/json
Path Variable: id (Long)
Status: 200 OK
Body: "Category deleted successfully"

옵션 관련 API

제목 메서드/URL 엔드포인트 요청 컨텐트 타입 / 요청 객체 응답객체 설명
옵션 조회 GET /admin/product/{id}/options Content-Type: application/json Status: 200 OK
Body: List of OptionResponse
옵션 추가 POST /admin/product/{productId}/option Content-Type: application/json
Body: OptionRequest
Status: 200 OK
Body: "Option added successfully"
옵션 수정 PUT /admin/product/{productId}/option/{optionId} Content-Type: application/json
Body: OptionRequest
Status: 200 OK
Body: "Option updated successfully"
옵션 삭제 DELETE /admin/product/{productId}/option/{optionId} Content-Type: application/json Status: 200 OK
Body: "Option deleted successfully"
옵션 수량 변경 PUT /admin/product/{productId}/option/{optionId}/quantity Content-Type: application/json
Body: OptionChangeQuantityRequest
Status: 200 OK
Body: "Option Quantity changed successfully"

위시리스트 관련 API

제목 메서드/URL 엔드포인트 요청 컨텐트 타입 / 요청 객체 응답객체 설명
위시리스트 제품 삭제 DELETE /wishlist/{productId} - Status: 200 OK
Body: "successfully deleted the item to your wishlist"
위시리스트에서 특정 제품을 삭제합니다.
위시리스트 조회 GET /wishlists - Status: 200 OK
Body: Page of WishProductResponse
사용자의 위시리스트 페이지를 반환합니다.
위시리스트 제품 추가 POST /wishlist/{productId} - Status: 200 OK
Body: "successfully added the item to your wishlist"
위시리스트에 특정 제품을 추가합니다.

주문 관련 API

제목 메서드/URL 엔드포인트 요청 컨텐트 타입 / 요청 객체 응답객체 설명
제품 주문 POST /order/{id} Content-Type: application/json
Body: OrderRequest
Status: 200 OK
Body: OrderResponce
제품을 주문하고, 해당 제품의 옵션 수량을 감소시킨 후, 카카오 메시지로 주문 내용을 전송합니다.

페이지 관련 API

제목 메서드/URL 엔드포인트 요청 컨텐트 타입 / 요청 객체 응답객체 설명
관리자 제품 페이지 GET /admin/product - HTML: "adminProduct" 관리자 제품 관리 페이지를 반환합니다.
회원 로그인/등록 페이지 GET /members/login, /members/register - HTML: "user" 회원 로그인 및 등록 페이지를 반환합니다.
제품 페이지 GET /product - HTML: "memberProduct" 제품 페이지를 반환합니다.
위시리스트 페이지 GET /wishlist - HTML: "memberWishList" 회원의 위시리스트 페이지를 반환합니다.

jinseohyun1228 and others added 30 commits July 22, 2024 15:08
<구현기능>
- KakaoController
1. requestKakaoLoginScreen() : 카카오 로그인 인증 코드를 요청하는 메서드
2. getKakaoCode : 전달받은 코드로 엑세스 토큰요청, 유저정보등록, jwt 발급하는 컨트롤러
<구현사항>
1. KakaoService 서비스 객체
(1) receiveKakaoToken() - 인가코드를 이용한 엑세스 토큰 발급해오기
(2) getKakaoProfile() - 엑세스 토큰을 이용한 유저정보 가져오기

2. UserService 서비스 객체
(1) loginKakaoUser() : 카카오 유저 정보를 받아서 없으면 DB에 저장하고, JWT를 발급
…g 사용

<변경사항>
1. KakaoController & KakaoService : 레코드 변경으로 getter메서드명 변경
2. Application : 레코드 변경으로 자동 빈 주입 방법 사용
3. application.properties : grantType값
4. KakaoProperties: 레코드로 변경, @configuration삭제, @JsonNaming 추가
[변경 사항]
1. KakaoProfile : name, email, password, role 메서드 추가
2. User : KakaoProfile를 받아 생성하는 생성자 추가
3. UserJoinRequest : 필요 없어진 부분 삭제

[변경 후 ]
UserJoinRequest와 KakaoProfile간의 관계가 사라지고, KakaoProfile로만 login 과정을 처리할 수 있게 되어서 더 깔끔해짐
jinseohyun1228 and others added 26 commits July 25, 2024 03:23
[변경 내용]
전 : 카카오서비스의 메시지 보내기 메서드에서 요청 바디를 만들고, Json으로 변환하는 부분까지 담당
-->
후 : 카카오 메시지는 팩토리패턴을 이용해 요청 객체를 전달받기만 함, 구조가 더 단순
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant