source

REST 웹 서비스와 RPC와 같은 서비스를 차별화하는 것은 무엇입니까?

manysource 2023. 7. 29. 08:36

REST 웹 서비스와 RPC와 같은 서비스를 차별화하는 것은 무엇입니까?

AJAX를 사용하여 서버에서 JSON 데이터를 가져오는 웹 애플리케이션이 있습니다.쿠키를 설정하려면 먼저 사용자가 브라우저로 로그인해야 합니다.GET그리고.POST동사가 사용되는 곳, 어디에서GET하기 위한 것이며 데터검및색입니다.POST는 데이터를 수정하는 모든 작업을 위한 것입니다.

제가 알기로는 REST는 위의 방법과 다르게 사용자 인증 정보가 모든 요청과 함께 전송됩니다.PUT그리고.DELETE동사도 사용됩니다.

제 질문은 REST 웹 서비스가 엔드포인트가 사용자의 브라우저로만 사용되는 경우 RPC와 같은 방법에 비해 어떤 이점이 있습니까?고객을 알 수 없을 때 REST가 어떤 이점이 있는지 이해할 수 있지만, jQuery agax 호출만 사용할 때 RPC와 같은 방법보다 이점이 더 가치가 있습니까?

REST와 RPC의 큰 차이점 중 하나는 REST가 리소스에 대한 모든 것이고 RPC는 작업에 대한 것이라는 것입니다.예를 들어, 진정한 RESTful 서비스를 사용하면 http://domain.com/service/User/jason/add 이나 http://domain.com/service/User/addUser?username=jason 과 같은 서비스를 호출할 수 없습니다.RESTful 서비스에서는 URL의 리소스만 참조한 다음 HTTP 동사와 요청 본문을 사용하여 해당 리소스에 대해 수행할 작업을 정의합니다.따라서 http:/domain.com/service/jason 에 대한 GET 요청은 리소스(제이슨 사용자)에 대한 정보를 반환해야 합니다. 더 구체적으로 http://domain.com/service/user/jason 이라고 말할 수 있지만 결과는 동일해야 합니다.jason이라는 이름의 사용자를 추가하는 경우 http://domain.com/service/user/jason 과 동일한 URL을 사용하지만 PUT 동사를 사용하고 요청 본문에 추가 데이터가 포함됩니다.Jason 리소스를 삭제하려면 동일한 URL(http://domain.com/service/user/jason) 을 사용하고 DELETE 동사를 사용합니다.업데이트하려면 POST 동사를 사용합니다.

REST는 다른 개발자가 사용할 공개 API에 적합합니다.서비스에 대한 기존 지식을 많이 필요로 하지 않도록 매우 표준적으로 만들 수 있습니다.WSDL 통화 등이 없습니다.상태 비저장으로 인해 부분적인 네트워크 장애 시에도 안정성을 높일 수 있습니다.

당신이 설명한 바로는 진정한 RESTFul 서비스가 필요하다고 생각하지 않습니다.하지만 앞으로 더 표준적인 API가 필요할 경우 고려해 볼 수도 있습니다.내부에서만 사용하는 프로젝트를 위해 REST 서비스를 만들었지만, 이는 잠재적으로 수십 개의 다른 서비스와 향후 다른 개발자로부터 해당 서비스에 액세스하기 위한 것이었기 때문입니다.처음에는 몇 가지 프로젝트에만 사용했지만 최종 목표는 보다 표준적인 인터페이스가 필요했습니다.

이런 식으로 생각해 보세요. 중요한 것은 기능인가요, 아니면 작용하고 있는 정보인가요?

REST를 처리할 때는 현재 정보가 무엇인지 확인하거나(GET) 특정 문서를 변경하거나(POST, DELETE) 새 문서를 작성하는(PUT) 정보 상태를 처리합니다.

RPC는 절차/기능/방법/운영에 관한 것입니다.그들을 당신의 언어로 뭐라 부르든.이 정보는 서비스에서 운영되거나 서비스에서 반환되는 것일 뿐입니다. 하지만 그 중 하나일 수도 있습니다.검색하여 항목 목록을 반환하는 중일 수 있습니다.또는 상호 작용이 필요한 부분에 대해 협상하고 있을 수도 있습니다. (REST의 대부분의 협상은 HTTP를 통해 처리되므로 수락 및 수락 언어 헤더를 사용하여 작업을 수행해야 합니다.) 그러나 더 중요한 것은 작업입니다.

그리고 세 번째 유형이 있습니다. 문서/문자 SOAP입니다. 여기서 중요한 것은 메시지입니다. 메시지를 기반으로 호출되는 기능이 무엇인지 추측해야 합니다.CRUD 작업만 처리하는 경우에는 문제가 없을 수 있습니다.이 경우 REST보다 장점은 WSDL을 계속 사용할 수 있다는 것입니다. 따라서 어떤 요소를 전송해야 하는지, 어떤 요소를 반환해야 하는지 미리 알 수 있습니다.

그들은 모두 일을 합니다...문제에 대해 어떻게 생각하는지, 그리고 API로 노출하기 위해 이미 가지고 있는 것에서 변환하는 것이 얼마나 쉬운지에 대한 것이 대부분입니다.만약 당신이 처음부터 시작한다면, 당신은 당신이 원하는 것은 무엇이든 할 수 있습니다.저는 개인적으로 WSDL 파일을 누군가가 클라이언트를 부트스트랩하는 데 사용할 수 있다는 점에서 SOAP(문서/라이트 또는 RPC)를 좋아합니다.저는 사람들이 몇 시간 안에 심각한 질문을 하는 경우가 있었습니다. (빈 문자열을 보내는 것과 null을 보내는 것 사이의 차이와 같은 API의 추상적인 세부 사항을 설명하는 것은 시간이 좀 걸렸지만 REST를 사용하지 않으면 동일한 문제가 발생했을 것입니다.)

REST는 리소스와 함께 작업하는 것이 가장 적합하지만 RPC는 작업에 대한 것입니다.

REST: Representative State Transfer의 약자입니다.독립 시스템 간의 상호 작용을 구성하는 간단한 방법입니다.RESTful 응용 프로그램은 HTTP 요청을 사용하여 데이터를 게시(생성 및/또는 업데이트)하고, 데이터를 읽고(예: 쿼리를 작성) 데이터를 삭제합니다.따라서 REST는 네 가지 CRUD(Create/Read/Update/Delete) 작업 모두에 HTTP를 사용합니다.

RPC: RPC는 기본적으로 사용자 요청을 처리하기 위해 서로 다른 모듈 간에 통신하는 데 사용됩니다.오픈스택에서는 가상 머신을 부팅할 때 nova, glance 및 neutron이 함께 작동하는 방식과 같습니다.

REST/RPC:

프로그래밍 접근 방식으로 REST는 웹 서비스 및 RPC에 대한 가벼운 대안입니다.웹 서비스와 마찬가지로 REST 서비스는 다음과 같습니다.

  1. 플랫폼에 의존하지 않음(서버가 Unix인지, 클라이언트가 Mac인지, 또는 다른 어떤 것이든 상관 없음),
  2. 언어에 의존하지 않음(C#는 Java 등과 대화 가능),
  3. 표준 기반(HTTP 위에서 실행) 및
  4. 방화벽이 있는 곳에서도 쉽게 사용할 수 있습니다.

REST가 호출 개체에 덜 연결되어 있다는 것은 맞습니다. 서버에서 WSDL 파일을 호출해야 하는 SOAP 웹 서비스와 비교할 때 REST 웹 서비스는 예(예)보다 덜 연결되어 있습니다(즉, 호출하기 전에 웹 서비스에 대한 지식이 필요하지 않음).그리고 대부분의 경우 토큰은 주어진 '표현'에 대한 요청과 함께 전달되어야 합니다.

나는 아약스의 REST를 사용하는 것에 큰 이점이 있다고 생각하지 않습니다. 사실, 당신이 취급하는 API에 따라 SOAP 기반 웹 서비스를 사용하는 동안 URI 매개 변수(쿼리 문자열 매개 변수)로 전달되는 토큰이 필요할 수 있습니다. 이것은 필요하지 않습니다.실제로 SOAP 웹 서비스를 Ajax 호출과 결합하고 JSON 형식으로 데이터를 전달하며 JSON을 서버 측 객체로 역직렬화하는 것은 매우 쉽습니다.게다가 jQuery는 이 모든 것을 매우 쉽게 만듭니다.

모두에게 털어놓기가 싫습니다.RPC는 기본 원격 동작을 추상화하는 로컬 통화를 하고 있습니다. 그리고 REST를 수행하는 것도 마찬가지입니다.REST에 대한 주장은 리소스에 대한 것이 아닙니다. 실제로 작업을 직접 호출합니다.

저는 Jsons가 RPC의 한 형태인 HTTP를 통한 REST를 주장합니다.

다른 인기 있는 RPC는 예를 들어 SOAP를 포함할 수 있습니다.

RPC와 REST는 장단점이 있는 서로 다른 접근 방식일 뿐이며 상황에 따라 둘 다 가치가 있습니다.이 두 가지 접근 방식을 단일 API에서 혼합할 수도 있습니다.

문맥, 그것이 핵심입니다.만병통치약은 없습니다. 맹목적으로 유행을 따르지 마십시오. 항상 맥락 안에서 생각해야 하며 해결책을 선택할 때 실용적이어야 합니다.

자세한 내용은 여기를 참조하십시오!

언급URL : https://stackoverflow.com/questions/7410040/what-differentiates-a-rest-web-service-from-a-rpc-like-one