BackEnd지만 네트워크 모를수 없지만 뒤돌아서면 까먹는다.
이 글에 필요한 지식들을 알짜배기로 적어 넣어놨다.
잊어버릴때마다 보고 또 보고 복습하자.
REST API가 무엇인지는 알고있다. 하지만 이것이 정말 RESTful한가? 라고 물어보면 글쎄…
무작정 POST로만 HTTP 메소드를 생성하고 있었고 네이밍 규칙은 지키지 않았다. 정답이 있는 질문은 아니지만 Best Pratice는 있다고 생각한다.
| 메소드 | 안전성 | 멱등성 |
|---|---|---|
| GET | O | O |
| POST | X | X |
| PUT | X | O |
| DELETE | X | O |
안전성이란 보안이랑 관계없이 호출해도 리소스가 변경되지 않는 성질을 의미한다. GET은 리소스를 조회할 때 사용된다. {key}로 데이터를 조회할때 외부에서의 방해가 없다면 항상 같은 값을 반환해야 한다.
멱등성은 동일한 요청을 한번 보내는 것과 여러번 연속으로 보내는 것이 같은 효과를 갖고, 서버의 상태도 동일하게 남는것을 의미한다. 응답 상태 코드가 아닌 서버의 상태가 동일하다는 점을 유의하자.
DELETE로 자료를 삭제하고 또 삭제하려고 하면 정상적으로 삭제가 되지 않을텐데 왜 멱등하냐고? 서버의 상태는 리소스가 삭제된 상태를 반환하니까
HTTPS = HTTP + SSL
HTTP의 보안 문제를 강화하기 위해 나온것이 HTTP라 할수있다.
HTTP의 보안적인 문제는 무엇이 있었고 어떻게 해결 한걸까?
HTTPS는 HTTP보다 암호화 과정등을 거치기 때문에 속도가 느려서 적절히 사용하라곤 했지만 이는 옛말이다. 지금은 무의미할 정도로 차이가 난다. 추가적으로 검색엔진에도 노출이 더 잘된다!
이런 이유들로 HTTPS를 사용하지 않을 이유가 더더욱 없다.
HTTP의 두가지 특징을 알아야 한다.
이전 통신을 저장하지 않기 때문에 매번 인증을 해줘야 한다. 나는 로그인을 하였으니 “장바구니” 목록을 보려면 또 로그인을 해줘야 하는 불편함이 생긴다. 이를 해결하기 위한게 쿠키와 세션이다.
쿠키는 클라이언트가 페이지를 요청하면 웹 서버가 쿠키를 생성하고 HTTP화면과 함께 쿠키를 돌려준다. 그렇게 사용자 로컬 PC에 쿠키를 갖고 있다가, 재방문시 쿠키가 있다면 쿠키도 같이 전송한다.
ex) “아이디와 비밀번호를 저장하시겠습니까?”, “일주일간 이 창을 다시 보지 않습니다.”
세션은 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로 보고 유지시킨다. 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위를 세션이라 생각하자. ex) 화면을 이동해도 로그인이 풀리지 않는다.
두 가지의 차이점은 상태 정보의 저장 위치다. 쿠키는 클라이언트에 저장하고, 세션은 서버에 저장한다.
쿠키는 로컬PC에 저장되므로 서버의 자원을 사용하지 않는다. 다만 보안 면에서는 세션이 session-id만 저장하고 처리하기 때문에 더욱 유리하다.

위 장점들로 인해 2.0은 1.0보다 Lower Latency를 제공한다.