api들을 쓰면서도 rest api라는 것을 들어만 보다가 이번에 처음으로 이게 뭐지 하고 공부를 하면서 느낀점은 정말 나는 기본도 안된 놈이었다
rest api는 rest하게 api를 만들기 위한 약속이라고 보면 된다. api들을 막 만든 나로서는 api를 어디로 보내든 어떻게 보내든 해보니까 되네?할 정도로 자유도가 굉장히 높다. 그래서 댓글 저장하는 api를 만들때 uri에 api/whatever_make를 쓰고 method로 get을 쓰고 body에 보내도 보내진다.
하지만 나처럼 미친 자유도를 뽐내면서 api들을 쓴다면 누군가 내 api들을 보고 이건 어따 보내는 거고 뭘 하려는 api지?라는 생각이 들수 밖에 없을 것이다.그래서 나온게 rest api이다.
먼저,
rest api란 웹의 장점을 최대한 활용할 수 있는 아키텍처이다.
rest api는 3가지 구성요소로 되어있다.
rest api설계 디자인은 2가지를 기억하자
1.uri는 정보의 자원을 포함해야한다
2.자원에 대한 행위를 http method로 표현한다
처음내가 썼던 예를 rest api로 다시 써보면, 댓글을 저장하려는 api를 만들려면 uri는 api/comment 라고 쓰고 method는 post로 보낸다. 이제 여기서 의문이 든다. uri는 정보의 자원을 포함시키면 되는 거니까 이건 어떻게 내가 해 볼만 한거 같은데 http method는 어떻게 써야하는거지? post는 뭐지?
그래서 http method에 대한 기본지식이 필요하다.
난 처음에 http method가 get, post방식밖에 없는 줄 알았는데 알고보니 굉장히 많았다.
아래 링크를 보면 http method의 종류,역할 method를 어떻게 보내야 하는지 잘 정리 되어있다.
표로 잘 정리한 사이트:https://javaplant.tistory.com/18
mdn(근본): https://developer.mozilla.org/ko/docs/Web/HTTP/Methods
나도 여기서 method를 알고 이제 rest하게 써보자!라고 생각했지만 느낌적으로만 알았던 uri 를 제대로 쓰기 위한 방법이 따로 있었다.
위 링크에서 '4. rest api디자인 가이드' 부분부터 보면 uri를 제대로 쓰는 방법이 자세하게 나온다.(전반적인 rest api이해를 위해서는 처음부터 쭉 읽는 것도 굉장히 좋을듯하다)
그래서 여기까지 생각하고 이제는 uri 쓰는 방법, http method쓰는 방법을 알았으니 이제 rest하게 api를 수정하러 가보자 생각했지만 리소스에 대한 응답을 잘 내어주는 것까지가 rest api에 포함 된다라고 한다.
아까 위에 언급했던 사이트에 다시가서 http 응답 상태 코드를 참고하자. 이것까지가 rest하기 위한 api이다.
사실 내가 리서치하고 최대한 끌어모아서 정리했지만 이쯤되니까 이게 정확한 rest api를 정리한 것인지 모르겠다. 차라리 로이필딩씨가 쓴 rest api논문을 읽어보고 다시 수정해야겠다.