have-a-meal / have-a-meal-server

1 stars 0 forks source link

[EAT-96] 하나의 HTTP 메소드와 호출되는 sql문이 1대1로만 동작을 해야 하는지? #37

Closed ywjywj closed 6 months ago

ywjywj commented 6 months ago

이슈 링크

ywjywj commented 6 months ago

다시 생각해봤을 때 post 메소드에서도 select 쿼리 문을 사용하기 때문에 가능한 게 맞다고 생각함. 다만 걸리는 게 있다면 PUT 메소드가 수정이라는 관점에서 보았을 때 데이터의 수를 늘리거나 줄이는 게 아닌 현재의 수를 보존한 상태에서 데이터의 값만 변경한다 라는 생각이 듦. 그래서 insert와 delete가 사용하여 PUT 메소드에 상관없이 진행을 해도 되는지 고민이 됨.

wjdwnsdnjs13 commented 6 months ago

다시 생각해봤을 때 post 메소드에서도 select 쿼리 문을 사용하기 때문에 가능한 게 맞다고 생각함. 다만 걸리는 게 있다면 PUT 메소드가 수정이라는 관점에서 보았을 때 데이터의 수를 늘리거나 줄이는 게 아닌 현재의 수를 보존한 상태에서 데이터의 값만 변경한다 라는 생각이 듬. 그래서 insert와 delete가 사용하여 PUT 메소드에 상관없이 진행을 해도 되는지 고민이 됨.

POST 메서드에서도 SELECT 쿼리문을 사용하기 때문이라기 보다는, 관점 자체가 다르다고 생각합니다. HTTP 메서드는 '통신'을 기준으로 했기 때문에 통신 요청 기준으로 업데이트를 요청하는 것이기 때문에 [PUT 요청 시 '서버의 관점'에서 insert 된다는 것이 맞는가?]는 성립이 되지 않는 말인 듯 합니다. 관점(기준)을 어디에 두는 지에 따라 결정이 되는 것이기 때문에 '통신'을 기준으로 한 HTTP 메서드에서는 실제 서버가 insert되거나 하는 동작은 고려할 필요가 없다고 생각합니다.

jaewoong-gwon commented 6 months ago

HTTP 메서드는 API 의 행위에 초점이 맞춰져 있다고 생각합니다. ex.) GET : 리소스 조회, POST : 리소스 생성 등 '실제 기능 동작 시 어떤 쿼리를 DBMS 에 날리는가' 는 상관없는거 아닌가요? 리소스 수정이 꼭 UPDATE 쿼리를 날려야하는건 아닌것 같습니다. 리소스 관점에서 보면 특정 날자에 있는 메뉴 데이터는 삭제후 재등록 과정을 겨쳤다고 해도 수정된 상태로 볼 수 있는거 아닌가 싶습니다.