REST와 JSON

[자바 웹 개발 워크북]이란 책을 보며 정리하였습니다.

Ajax와 REST 방식의 이해

Ajax(Asynchronous JavaScript And XML)

  • 브라우저에서 서버를 호출하지만 모든 작업이 브라우저 내부에서 이루어지기 때문에 현재 브라우저의 브라우저 화면의 변화 없이 서버와 통신할 수 있음.
    ex) 자동완성, 지도 서비스 등등
  • Ajax가 적용되면서 자바스크립트 중심으로 데이터를 다루는 기술의 수요가 점점 늘게 되었고, 최근에는 프론트엔드 중심의 개발 방식이 자리잡게됨.
  • Ajax의 약자에는 자바스크립트와 XML이라는 단어가 들어가는 것 처럼 실제 구현은 자바스크립트와 XML을 주고 받는 방식을 이용했습니다만, 최근에는 JSON을 이용하는 방식을 더 선호(스프링부트는 Spring web Dependency를 추가했을 때 자동으로 관련 라이브러리를 내려받음)

JSON 문자열

‘서버에서 데이터를 보내고 클라이언트가 적극적으로 이를 처리한다’ 라는 개발 방식의 핵심은 우선 문자열 입니다. 왜냐하면 ‘문자열’은 어떠한 프로그래밍 언어나 기술에 종속되지 않기 때문입니다.
JSON은 자바스크립트 문법에 맞는 문자열로 데이터를 표현하기 때문에 클라이언트에서 어떤 기술을 이용하든 공통적으로 인식할 수 있습니다.
스프링부트 역시 JSON 관련 라이브러리(jackson-databind)가 이미 포함되어 있으므로 별도의 설정 없이 바로 JSON 데이터를 만들어 낼 수 있습니다.

REST 방식

REST 방식은 클라이언트 프로그램인 브라우저나 앱이 서버와 데이터를 어떻게 주고받을는 것이 좋을지에 대한 가이드라고 할 수 있습니다. 예전의 웹 개발 방식에서는 특정한 URL이 원하는 ‘행위나 작업’을 의미하고, GET/POST 등은 데이터를 전송하는 위치를 의미했습니다.
Ajax를 이용하면 브라우저의 주소가 이동할 필요 없이 서버와 데이터를 교환할 수 있기 때문에 URL은 ‘원하는 대상’ 그 자체를 의미하고, GET/POST 방식과 PUT/DELETE 등의 추가적인 전송 방식을 활용해서 ‘행위나 작업’을 의미하게 되었습니다. REST 프로젝트의 규모가 커지기 전에 이러한 규칙들에 대한 논의가 필요하고 이런 방식으로 만들어진 서비스를 ‘RESTful’하다고 표현합니다.
REST 방식은 ‘하나의 자원은 하나의 주소로 표현’이 가능하고 유일무이해야 합니다. 즉 REST 방식에서 URL 하나는 하나의 자원을 식별할 수 있는 고유한 값이고, GET/POST 등은 이에 대한 ‘작업’을 의미합니다.

REST방식의 URL 설계

REST방식은 특별히 표준으로 정해진 설계 원칙이 존재하지는 않습니다만, 일반적으로 많이 사용하는 방식으로 게시물 관리를 설계한다면 다음과 같이 작성할 수 있습니다. REST URL

PUT과 DELETE를 사용하는건 위험할까?
어디선가 위와 같은말을 들어본 적이 있어서 찾아보고 정리하였다.
사실 put과 delete같은 경우도 POST방식으로 대체가 될 수 있기 때문에 보통 GET, POST를 거의 많이 사용한다. 그래서 DELETE와 PUT에 대한 보안설정이 안되어있다… 등등의 내용이 많은데 아래 내용이 맞는것 같다. PUT과 DELETE (출처 : https://okky.kr/questions/395308)