RESTful에 대한 궁금증 질문 드립니다. ( 개념 적인 질문 )

조회수 2025회

현재 많은 웹 개발이 RESTful API 형태로 개발이 되어지는데, RESTful이란 정확히 무엇인지 알려주셨으면 큰 공부가 되리라 생각합니다.

제가 이해한 것은 기존 웹 의 형태가 Web 의 효율성을 제대로 사용하고 있지 않다고 판단했던 Roy fielding 박사 논문에서 거론 된 네트워크 기반 아키텍처가 RESTful 이고, URI를 통해 CRUD를 나누지 말고, HTTP method를 통해 역할을 나누고, URI상에는 표시 하지 않고 동작 하게 끔 한다는 취지인 것으로 알고 있고, 이해하고 있는데.. 뭔가 찝찝하게 이해하고 있는 것 같아 질문드립니다.

정확하게 RESTful이 무엇인지에 대해 설명 해주실 분 계실까요 ?

1 답변

  • 좋아요

    4

    싫어요
    채택 취소하기

    요약하자면 이해하고 있는 것이 맞습니다.

    RESTful 웹이 제안되기 전에는 HTTP 규격에 제안된 기본 메소드(GET, PUT, POST, DELETE, HEAD, OPTIONS, ... ) 중에서 GET, POST 만으로 웹 및 웹 서비스를 구현하고 있었습니다. 물론 이렇게 된 배경에는 보안상의 이유가 있었습니다만...

    RESTful의 제안자는 개발되고 있는 웹과 웹 서비스들이 URL 의 규정과 합치하지 않는 것과, 이미 제정되어 있는 HTTP 메서드를 사용하고 있지 않은 점을 들어 제안한 것으로 알고 있습니다.

    HTTP 의 과거 사용 형태

    GET, POST를 통해서 서버에 어떤 리소스(정보 혹은 정보를 담은 개체)를 만들고(CREATE), 찾고(RETREVE), 수정하거나(UPDATE) 지우고 했습니다. 이 를 하는 방법이 통상 다음과 같은 스타일로 URL로 표현했었습니다.

    POST /create/some/resource
    GET /find/some/resourceid
    GET /search/some/keywords
    POST /update/some/resource
    GET /delete/some/resourceid
    

    URL

    URL은 인터넷 상에 존재하는 리소스의 위치(일종의 전자주소)를 의미합니다.

    RESTful에서 바라보는 문제점

    앞의 방법에 따르면 리소스가 생성-검색-수정-삭제의 사이클 속에서 서로 다른 URL을 가지게 됩니다. 똑같은 리소스인데도 검색할 때 다르며, 수정할 때 다릅니다. 심지어 이 당시의 게시판 같은 경우는 모든 게시글이 똑같은 url을 가지고, url의 parameter만 다른 형태를 취하는 것이 일반적이었습니다.

    URL의 원래 개념대로 사용하고, 웹 상의 리소스에 대한 CRUD는 각각 대응되는 HTTP 메서드 (Create=>PUT, Retrieve=>GET, Update=>POST, Delete=>DELETE)로 사용해야한다는 것이 RESTful의 요체입니다.

    소결

    방법론적으로 HTTP와 URL의 원래 개념대로 제대로 사용하자는 것인데, 주장 자체가 수긍하기 쉬울뿐더러, 기존의 방법과 비교해서 새로 구현하는 입장에서 보면 기존의 방법보다 오히려 더 직관적이며, 개발 난이도 면에서도 크게 차이가 나지 않기 때문에 널리 퍼지게 되었다고 생각합니다. 또한 초기의 HTTP와 달리 HTTPS와 다양한 웹 인증 방법들의 발전으로 보안적인 부분도 어느정도 해결되었기에, 쉽게 사람들에게 수용되었다고 생각됩니다.

    • 쉽게 설명해주셔서 감사합니다. 아!, 그런데요. HTTP 메소드 중 POST -> Create로 알고 있었는데 아니였나보군요...상세한 설명 감사합니다. ^^ seungdols 2016.6.6 13:16

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)