API 기반 세부 기능 설명, GitHub 오류 해결, 메뉴 생성 개발

Ryu·2022년 9월 6일
0

API 를 기반으로 한 세부 기능 분류

  • API 를 바탕으로, 기능별 분류
    1. 로그인, 회원가입
    2. 메뉴판 crud
    3. 주문 확인 기능
    4. 매장 관리 기능
    5. 카테고리 crud
    6. 유저 닉네임설정 + 메뉴판 조회기능
    7. 장바구니 crud + 주문
    8. 주문 내역 확인 + 주문 취소
  • 첫 번째 스프린트에서는 메뉴판 CRUD와 카테고리 CRUD를 진행

Valid 에러 발생

There was an unexpected error (type=Internal Server Error, status=500).
HV000030: No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.Integer'. Check configuration for 'price'
  • MenuForm 클래스에서 price 는 int 형인데, @NotEmpty 를 붙여서 오류발생..
    @NotNull 을 넣어줘야 한다.

GitHub 관련 오류 해결.

✅ 알게 된 것들 정리.

  • 현재 작업 중인 branch 의 변경 사항을 commit - push 해야 git pull origin main 이 가능하다.
    즉, 원격 저장소 내역을 항상 최신화하는 습관을 가지자.
  • 로컬에도 origin/main 이라는 나만의 원격 저장소가 존재한다.
    따라서, 협업 시에도 git push origin main 하면, 원격 저장소가 업데이트 되는 것.
    - 이번에 실수한 점은, git commit 만 하고 바로 git pull origin main 을 해버렸다.
    그랬더니, 메인프로젝트의 main 내용이 내 원격 저장소 main 브랜치에 fetch가 되었고, 옛날 버전의 로컬 branch 작업 내역들이 다시 현재 내 branch와 섞여 버리는 문제가 발생했다…
    git push 를 해줬으면 문제가 발생하지 않았다.
    - 그래서 , git reset HEAD~1 로 이전 커밋 시점으로 돌아갔지만, 문제가 해결되지 않아 수동작업(파일 삭제, commit 롤백)으로 문제를 해결했다.
    - 문제 해결 후, git push -u origin main —force 로 강제로 내 원격 저장소에 push 했다.
    이후, git pull origin main 으로 메인프로젝트 원격 저장소의 main branch 내역을 적용했고,
    merge 해결 후, git commit -m “파일 최신화” 로 commit, push 까지. 이제, 내 로컬 branch작업 내역과 원격 저장소 branch 가 일치한다.

범용성 있는 프로그램 , Trade Off

✅ 범용성 있는 프로그램의 장단점

  • 장점은 말 그대로, 보다 많은 사람들이 서비스를 이용할 수 있도록 설계한다는 것이다.
  • 그러나, 그만큼 DB 설계도 복잡해지고, 다대다 관계가 많아져 모두 1대다 다대1 로 풀어야 하는 문제점이 발생..
    • 실제로, 카테고리 - 음식점 테이블도 개발 도중 다대다 관계로 수정했다.

메뉴 화면 보여줄 때, 음식점 식별해서 보여주기

✅ 어느 음식점에 속한 메뉴인지를 알려줘야 하기 때문에,

  • 쿠키값을 계속 보내는 방식 (x)
  • 암호화한 세션 값을 url 링크 앞에 붙여버리기. (@PathVariable 로 가져올 수 있음) (o)
    • 어차피, 비밀번호 모르므로 상관없다.

폼 매핑

✅ 빈 객체 넣어주는 이유 ?

  • 일단 get 으로 가져올 때, 타임리프 템플릿 페이지를 보여줘야 하기 때문이다.

Optional

  • Opitonal 로 서비스에 반환 후, isPresent 메서드로 체크하는게 좋은 방식이다.
  • 가급적 Controller 단까지 Optional 을 가져와서 처리하지 않는다.
    Service 단에서 처리할 수 있는 것은 모두 처리.
    Controller 는 단순 매핑, 템플릿과의 연결, 리다이렉트 등 담당하는 기능만 들어가야 한다.
profile
Strengthen the core.

0개의 댓글