오늘까지 Servlet(controller), DAO(model)들을 작성하면서 Restful API, Restful service에 대한 개념을 어느정도 명확하게 이해할 수 있었던 것 같습니다.
Restful하다는 의미에 대해 이전까지는 client 요청에 대한 대표적인 상태(representational state)를 공유하는 구성으로 이루어진 프로젝트로 다소 모호하게 이해하고 있었습니다.
프로젝트를 진행하면서 이 Restful에 대해 느낀점은 Servlet, DAO를 통해 다양한 과정을 거치고 거쳐, 결국 최종적으로 선택된 하나의 자원(즉 사용자에게 보여지는 view, jsp파일)이 client와 공유하였다는 것이고, 이 공유된 최종적인 자원이 바로 Restful의 Representational state임을 이해하게 되었습니다.
javascript부터 배우고, 실무도 javscript/nodejs를 이용하여 그런지 사실 Restful, http에 대해 그렇게 많은 생각이나 중요성을 느끼지 못하였는데, 오히려 이런 부분들이 최근 나오는 백엔드 개념의 기본이 된다는 것을 크게 느꼈던 것 같습니다.
특히 method를 통해 자원이 이동하고 이를 통해 data가 이동하는 과정을 이해해보니, 지금까지 배워왔던 백엔드에 대해 조금 실마리가 잡혀가는 생각이 들게되었습니다.
지금까지 javascript의 nodejs와 graphql이라는 기능을 통해 백엔드를 진행하였는데, 처음 접하였을때는 Restful의 단점을 보완하기 위해 만들어진 기능으로 graphql이나 내부적인 data modeling만 잘하면 되지 않을까 생각하였는데,오히려 반대로 Restful을 잘 이해한 상태로 graphql(최근 기능)을 넘어가야 이것을 왜 사용해야 하는지, 결국 상태정보를 공유한다는 것은 같은 본질이라는 점을 알 수 있다는 결론을 얻었습니다.
지금까지 DB의 data를 수정할때 doPost method를 사용하였지만, doPut나 doDelete도 비슷한 원리로 사용할 수 있지 않을까는 생각이 들었습니다.