✅ fetch post mappping
#️⃣ rest와 restful
rest 자원관리를 하는데 사용한 식별방식 (표현식)
restful rest스럽게 사용하겠다
거시적인단위에서 미시적인 단위로 들어가는 구분자
(탐색기도 rest임)
리소스를 구하는 url은 rest가 아니었는데, 이제 리소스를 찾는거에만 목적을 두는게 아니라 rest형태를 가진 요청으로 바꾸려고 하는 것
crud는 메서드로 해결하고 (예전처럼 url에 행위를 붙이지않는다) 속성을 선택하도록 한다.
#️⃣ API URL짜기 (좋아요 버튼을 클릭했을때 post url은 어떻게 되는가?)
🟩 다대다 관계에서 행위가 나오면 테이블이 하나 생기고 그걸 기준으로 url을 잡는다 ✔️ 메뉴리스트 읽어오기 api/menus get 메서드 (select) ✔️ 메뉴리스트 수정하기 api/menus put 메서드 (update) ✔️ 주문할시 api/orders/ post메서드 (insert) ✔️ like를 추가할시 api/likes/{id}/ post 메서드 (insert) POST / api/likes body → menuId & memberId ✔️ like를 삭제할시 api/likes/{id}/ delete 메서드 (delete) DELETE /api/likes/2/members/1 (likes의 메뉴아이디 2, 멤버아이디 1을 지우겠다) -- 복합키 처리 👉 delete는 post처럼 바디를 갖고있지 않음! |
✅ api용 MVC 만들기
#️⃣ LikeController
@RestController("apiLikeController")
@RequestMapping("/api/likes")
public class LikeController {
@Autowired
private LikeService service;
@PostMapping
public Like reg(@RequestBody Like like) { //post는 body에 담긴 내용을 보낸다 RequestBody 빼먹지말것!
Like newOne = service.add(like);
return newOne;
}
@DeleteMapping("{menu-id}/members/{member-id}")
public Boolean delete(@PathVariable ("menu-id") Long menuId, @PathVariable ("member-id") Long memberId) {
// 나중엔 상태를 돌려주는걸로 변경될 예정
// 복합키이므로 키를 나눠서 넘기는게 더 분명하다
Boolean result = service.delete(memberId, menuId);
return result;
}
}
#️⃣ LikeService & LikeServiceImp
public interface LikeService {
Like add(Like like);
Boolean delete(Long memberId, Long menuId);
}
//----------------------------------------------
@Service
public class LikeServiceImp implements LikeService {
@Autowired
LikeRepository repository;
@Override
public Like add(Like like) {
repository.save(like);
Like newOne = repository.last(like);
return newOne;
}
@Override
public Boolean delete(Long memberId, Long menuId) {
int rowCount = repository.delete(memberId, menuId);
if(rowCount==1)
return true; // 기존 값 여부 체크. 한줄이 반환되었을시 true를 반환한다
return false;
}
}
#️⃣ LikeRepository
@Mapper
public interface LikeRepository {
void save(Like like);
int delete(Long memberId, Long menuId);
Like last(Like like);
}
'😵 ~23.11.10' 카테고리의 다른 글
1018 | 서버에서 쿠키 꺼내쓰기(@CookieValue), 쿠키 특징, 로그인페이지 만들기 (0) | 2023.10.18 |
---|---|
1017 | 인증과 권한 개념, 세션과 쿠키 (0) | 2023.10.17 |
1016 | Promise 사용해보기, promise.then, fetch() api, 기존 XMLHttpRequest를 FETCH 방식으로 (0) | 2023.10.16 |
1013 | 전체메뉴 조회, bind로 중복화면 묶어주기, promise 개념, CORS개념, 콜백함수 개념 (0) | 2023.10.13 |
1012 | 카테고리에 db반영, 전체박스 온클릭 이벤트와 자손 타겟 구별하기, 타겟에 클래스속성 부여하기(element.classList), 클릭값만 api로 데이터받기 (0) | 2023.10.12 |