PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2017/10/14 12:20:48
Name 1llionaire
Subject [질문] [웹개발] REST API 에 대해 질문드립니다...
저는 HTTP 메소드 중 GET , POST 만 써봤고...
두가지 방식이 그냥 파라미터 전달하는 방식에 차이가 있다고만 생각하고 있었습니다.

그런데 REST 관련을 보니...
데이터를 조회할 때는 GET 을 쓰고, 생성할 때는 POST 를 쓰고...
(추가로 PUT , DELETE , PATCH 도 수정,삭제 할 때 쓰더군요)

여기서 이해가 안되는 것이...
단순히 조회냐 추가냐 혹은 삭제냐 이런 행위에 대한 차이 때문에 파라미터 전달 방식 자체가 바뀌어야 할 이유가 있나요?


제가 알고 있던 구분 개념과 전혀 다른 방식으로 방식을 나누니 멘붕이 왔어요.
(기술적인 방식의 차이로 구분하는 걸로 알고 있었는데, REST 에서는 행위의 목적에 따라 구분을 해서요.)

저것이 REST 를 설계하면서 나온 HTTP 메소드가 아니라, 기존에 존재하던 HTTP 메소드를 이용해서
설계하는 RESTful  이 나오면서 임의로 대응시켜서 그런건가요?

쓸 수는 있어도,  파라미터 전달 방식이 목적에 따라서 바뀌어야 하는 이유가 이해가 안가서 답답하네요,

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
pppppppppp
17/10/14 12:38
수정 아이콘
Http는 파일을 전송하는 방식의 한가지 프로토콜이고 Rest는 스케일할 수 있게 APi를 설계하는 방법 중 하나라고 표현하면 되려나요.?

밑에 분이 자세하게 더 설명해 주시겠지만 www같은 인터넷은 REST API기반으로 만들어져있고 파일 전송 프로토콜로 http를 채택한 경우라고 보시면 됩니다. Http가 아닌 ftp같은 방법을 선책할 수도 있었지만 안한 것 처럼요.

Http 메소드는 겟 포스트로 전송 관련 verb를 사용하지만 RESTful하게 만들기 위해서, 즉 스케일하기 위해서 또는 더 편하게 만들기 위해서 put, delete등과 같은 REST 프로토콜의 verb를 사용하는걸로 알고 있습니다.

즉 Http와 rest는 다른 것이지만 인터넷은 두가지를 합한 것이라고 보시면 됩니다
1llionaire
17/10/15 21:01
수정 아이콘
답변 감사드립니다! 공부가 많이 필요하겠어요..
17/10/14 12:58
수정 아이콘
(수정됨) GET/POST가 기술적으로 분화된 것이 아니고, HTTP 1.1을 정의할 때 이미 그런 의미적인 부분들이 들어있었습니다 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html)
REST를 설계할 때 (기존에 잘 쓰이지 않던) HTTP의 개념을 가지고 일종의 표준화를 시도한 것입니다.

물론 강제되는 사항은 아니지만, 일종의 약속으로 생각하시면 됩니다. 이런 약속을 했을때 장점 중 하나로, 프로그래머가 새로운 API를 쓰려고 할 때, 동작을 대략이라도 예측할 수 있게 됩니다. 브라우저의 동작도 달라지구요. (가령 캐시라던가, 새로고침을 해도 되는가 안되는가 같은 것들).

예를 몇 가지 들어보면, GET은 리소스를 읽는 동작으로 약속되어 있고, POST는 리소스를 만드는 동작으로 약속되어 있습니다. 따라서 사용자가 새로고침 버튼을 누를 떄, GET인 경우에는 걱정 없이 바로 보여주는 반면, POST인 경우에는 폼이 재전송될 수 있다는 경고를 띄워주죠. 리소스가 두 번 생성될 수 있으니까요.
또한 POST는 새 리소스를 만드는 동작, PUT이나 PATCH는 기존 리소스를 업데이트하는 동작으로 약속되어 있습니다. 이런 약속이 없다면 새 API를 쓸 때마다 이게 업데이트인지 생성인지 일일이 찾아보면서 만들어야 하고 심지어 API마다 다 다를 수도 있고요.
또 검색엔진들이 페이지를 크롤링할떄, GET 메서드는 리소스를 바꾸지 않아야 하기 때문에, 안전하게 글을 긁을 수 있습니다. 만약 게시판에 글을 쓰거나 삭제하는 메소드가 GET으로 구현되어 있다면? 시도 때도 없이 새 글이 생기거나 사라지겠죠.
1llionaire
17/10/15 21:01
수정 아이콘
마지막은 구글 액셀레이터 사건 같은 거로군요. 답변 감사드립니다~
Sam Presti
17/10/14 13:34
수정 아이콘
Rest는 주소를 통해서 접근하는 대상이 웹 페이지라기 보다는 하나의 리소스입니다. (리소스에 웹페이지가 포함될 수는 있습니다.) 흔히 Rest를 단순하게 이해하려는 사람들이 Rest는 HTTP + JSON이다 라고 단정짓는 경우가 있는데, 실제로 Rest가 저 리소스를 JSON으로 전달하는 경우가 많아서 그렇습니다. HTML로 웹 페이지를 전달해도 Rest 방식일 수 있습니다.
단순화 시켜서 pgr21.com/member 는 pgr21의 회원정보(리소스)를 표현하는 주소로 볼 수 있습니다. 저 주소를 GET으로 요청하면 회원정보를 보내달라는 요청이 될 수 있습니다. pgr21.com/member/abc123 의 경우 pgr21의 회원정보 중 abc123이라는 ID를 가진 사람을 나타내는 주소가 될 수 있습니다. 이 주소를 GET으로 요청할 경우 abc123의 정보를 보내달라, 같은 주소를 POST로 요청할 경우 내가 보낸 내용으로 저 사람을 추가해달라는 요청이 될 수 있습니다.
보통 예전에 웹 서비스는 서비스 제공, 그러니까 무엇을 할 것인가에 집중했기 때문에 pgr21.com/newMember.do?id=abc123 이런 식으로 주소 자체가 어떤 구체적인 요청을 가지고 있었다면, REST 방식은 무엇을 대상으로 하느냐가 주소로 기록되기 때문에 그 대상에게 무엇을 할 것이냐는 보통 HTTP Mehod (GET, POST, UPDATE, DELETE)로 표현하는 약속이 정해진 것입니다. 물론 실제로 리소스에 대한 모든 동작이 저 method 들로만 표현될 수는 없기 때문에 Restful한 웹 서비스라는 것이 이렇게 단순하게 표현되지는 않지만 어쨌든 배경은 그렇습니다.
1llionaire
17/10/15 21:01
수정 아이콘
자세한 설명... 답변 감사드립니다!
Lord of Cinder
17/10/14 15:41
수정 아이콘
HTTP/1.1 "규약"에서 그 Method로 HEAD, GET, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE (나중에 PATCH 추가) 등을 이러이러하게 쓰기로 사전에 "약속"을 한 것입니다.

그리고 REST는 그 HTTP 규약에 의해 약속된 바를 잘 지켜서 쓰자는 "방법론" 혹은 "관행"이죠. 이미 HTTP 규약에 따라 적절한 메소드가 다 있는데, 뭐하러 GET /delete_member.jsp?id=1234 같은 식으로 쓰냐는 거죠. 우리 친구들이 다들 GET, POST만 쓰고 있는데, 우린 이미 DELETE도 갖고 있고 모르겠으면 OPTIONS로 Allow: 받아오면 되고, 여튼 DELETE /member.jsp?=1234 같은 더욱 간명하고 딱 보이는 길이 있는데, 왜 다들 GET, POST만 쓰냐는 거죠.
칸나바롱
17/10/14 17:09
수정 아이콘
구현하실땐 근데 get과 post로만 구현하셔야해요.
포도사과
17/10/15 14:20
수정 아이콘
PUT DELETE도 많이쓰지않나요? 저희는 그렇게 쓰고있는데
칸나바롱
17/10/15 15:20
수정 아이콘
아 저는 html내에서 말하는거예용..
포도사과
17/10/15 16:12
수정 아이콘
프론트엔드쪽이여도 ajax로 처리할 수 있으면 그렇게 하는게 좋지않나요?
1llionaire
17/10/15 21:02
수정 아이콘
저도 싱글페이지어플리케이션에서 ajax 만 쓸 건데... 다 쓰는 게 좋겠죠?
포도사과
17/10/15 21:21
수정 아이콘
저는 SPA라면 백엔드를 받쳐쥬는 뷰가 없기때문에 더더욱 restful을 선호합니다.
발음기호
17/10/14 22:24
수정 아이콘
피지알에 고수분들 많으시네요
질문자는 아니지만 지나가다 잘 배우고 갑니다
포도사과
17/10/15 14:27
수정 아이콘
(수정됨) restful하지 않았던 시대의 개발을 생각해보면 restful을 왜 쓰는지, 써야하는지를 이해하실 텐데요,

유저가 하나의 캐릭터를 가지고 있을때 이것을 업데이트한다고 하면
아래와 같은 URL을 만들 수 있습니다.

/user_character/update
/get_user_character/update_character(POST로 user, character 정보를 get할 수 있는 정보가 들어가고 업데이트할 정보도 포함)

단순히 말씀드리면 이전까지 URL을 설정하는 것은 회사마다, 사람마다, 기관마다 다른 방식이고 이것에 대한 문서화가 없으면 새롭게 작업을 진행하거나 url을 예측하기가 무척 어렵습니다.
규율이 빡빡하지 않으면 같은 회사여도 개발 팀단위로, 혹은 작업자 단위로 url routing 을 조금씩 다르게 하고 있을 겁니다.

restful은 이러한 것에 일종의 공통룰을 도입했다고 보시면 될 듯합니다(http 기본을 충실히 따르는).
유저가 하나의 캐릭터를 가지고 있을때 이것을 업데이트한다. 거의 대부분 아래와 같은 형태의 URL 과 파라미터가 만들어 질 것입니다.
/user/character (PUT)

과거에는 하나의 서비스만으로도 모든 것을 처리할 수 있었다면 현재는 그렇지 않습니다.
대부분의 경우 하나의 웹 서비스는 다른 하나 이상의 웹 서비스와 상호 연결성을 지닙니다.
그러니 이 부분에서도 문서 없이 url을 대강이라도 눈치 챌 수 있거나 혹은 직관적인 것이 개발에 큰 도움이 됩니다.

특정 기술이 왜 유행하는지에 대한 가장 근본적인 이유는, 그 기술을 쓰지 않았을 때는 어떠했는가를 이해하시면 될듯합니다.
1llionaire
17/10/15 21:04
수정 아이콘
답변 감사드립니다. 글 달린 거 쭉 읽어보니 어느 정도 이해가 되고 있어요... ( ?! .. ... )
포도사과
17/10/15 21:23
수정 아이콘
감사합니다. 저도 부족한 지라 더 좋은 내용을 능력자분들이 달아주실거라 생각합니다
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
110368 [질문] 월세에서 전세로 옮기려고 하는데요... [3] Southampton FC1793 17/10/15 1793
110367 [질문] 한시(漢詩)를 찾고 있습니다. [2] patio2448 17/10/15 2448
110366 [질문] 그래픽카드 보조전원 연결안해도 상관없나요? [19] 69눈바디26525 17/10/15 26525
110365 [질문] 같은 아파트 주민인데 어떻게 대해야 할지 난감하네요...(주차문제) [26] 삭제됨4095 17/10/15 4095
110364 [질문] 술먹기 전에 먹으면 몸보호용으로 뭐 드세요? [26] will3706 17/10/15 3706
110363 [질문] [자동차사고] 이경우엔 과실이 어떻게 되나요? [3] 순수한사랑1785 17/10/15 1785
110362 [질문] [소전] 겜알못이 헌팅래빗 공략에 대해 질문드립니다ㅜㅜ [10] Broccoli3392 17/10/14 3392
110361 [질문] [lpl] 오늘 롤드컵 경기 추천 부탁드립니다!! 리니시아1351 17/10/14 1351
110360 [질문] [애터미] 애터미 카레? 및 판매수단 관련 궁금증입니다. [8] 재입대2903 17/10/14 2903
110359 [질문] 드라군 무빙샷 컨트롤은 홀드, 패트롤 중에 어떤걸로 하나요? [6] 파란샤프5949 17/10/14 5949
110358 [질문] BJ들이 좌우반전으로 영상을 찍는 이유가 뭔가요? [6] Brasileiro36962 17/10/14 36962
110357 [질문] 이태원 지구촌 축제 사람 어느정도인가요? [4] 다크템플러2054 17/10/14 2054
110356 [질문] 스타크래프트 하기 좋은 모니터 좀 추천해주세요~ [10] 바람의여행기4274 17/10/14 4274
110355 [질문] 이게 공황장애 증상인가요? [6] 삭제됨2522 17/10/14 2522
110354 [질문] 유명한 대사인데 사실은 아닌 대사 [17] 리나시타4219 17/10/14 4219
110353 [질문] 스팀 아이템 판매가 궁금합니다. [5] APONO8048 17/10/14 8048
110352 [질문] 던파] 85 에픽 무기 뭐 받는게 좋을까요 [5] 지수2292 17/10/14 2292
110351 [질문] A brawl is surely brewing이 무슨뜻인가요? [3] 3.1415922782 17/10/14 2782
110350 [질문] 오사카 교토 교통질문입니다 [12] 보리2154 17/10/14 2154
110349 [질문] 교촌치킨 질문입니다. [8] DAUM3935 17/10/14 3935
110348 [질문] 치킨집 주방알바 해보신분 계신가요? [1] 포이리에3981 17/10/14 3981
110347 [질문] 군대갑니다.. [51] 악당3838 17/10/14 3838
110346 [질문] 부동산 중개 수수료 관련 질문입니다. [5] 양현종2230 17/10/14 2230
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로