✅ 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);

}

json은 content-type에도 json으로 표기가되어야함

 

 

 

 

+ Recent posts