"서비스"vs "API"는 매우 모호한 질문입니다. 흔히 두 용어는 서로 바꿔서 사용됩니다. "REST"와 "RPC"는 설명하기가 조금 더 쉽습니다.
일반적으로 REST를 사용하면 URL은 "사용자", "계정"등과 같은 특정 리소스를 나타냅니다. 일반적으로 HTTP 메소드 POST/GET을 사용하여 이러한 리소스를 생성/검색/업데이트/삭제할 수 있습니다/PUT/DELETE. 사용자 1125에 대한 프로필을 업데이트하려면 다음을 보낼 수 있습니다 : 당신이 사용자 1,125으로하고 싶었던
POST /user/1125 HTTP/1.1
Host: wherever.com
Content-type: application/x-www-form-urlencoded
firstName=Davey&lastName=Jones&email=dj%40thebrineydeep.com
아무것도, 당신은 동일한 URL로 요청을 보낼 것입니다. 이 아이디어의 예외 및 변형이 있지만 그 것이 핵심입니다.
RPC 서비스는 특정 URL에 바인딩 된 함수 라이브러리를 사용하는 것과 같습니다. 관련 함수 전체가 모두 /services/json
URL에 바인딩되어있을 수 있습니다. 당신은 오래된 데비 존스의 프로필을 변경하고자한다면 다음, 당신은 것 :
POST /services/json HTTP/1.1
Host: wherever.com
Content-type: application/json
{ "jsonrpc": "2.0",
"id": 1,
"method": "setProfile",
"params": [ 1125,
{ "firstName": "Davey",
"lastName": "Jones",
"email": "[email protected]"
}
]
}
나는 개인적으로 JSON-RPC와 같은 더 나은 때문에 : 나는 시도하고 모든 맞게 필요가 없습니다
- 내 함수가 의미가 없을 수도있는 일종의 resource-to-url 매핑을 호출합니다.
- API 오류를 나타 내기 위해 HTTP 응답 코드를 오버로드하지 않습니다. 모든 요청은 서버 오류가없는 한 200 응답을 리턴하고 응답 본문에서 오류가 있는지 여부를 알 수 있습니다. JSON-RPC는 오류 조건에 대해 명시 적으로 잘 설명합니다.때문에
때때로 REST는 더 :
- 때때로 자원 - 투 - URL 매핑이 정말 잘 맞는
- 제 3자가 그것은에 대한 간단한 모델을 제공
- 을 이해하는 것이 더 직관적이다 쉽게 식별 된 정보 만 검색하기 만하면됩니다.
나는 코드 작성이 쉽지 않다고 생각합니다.
편집 REST 예제를 JSON 대신보다 일반적인 양식 인코딩 된 데이터로 변경했습니다. 물론 REST로 원하는 데이터 형식을 지정할 수 있습니다. 그것은 돌에 새겨 져 있지 않습니다.
여기에 비교가 있습니다. RPC 사용 SOAP을 원한다면 http://stackoverflow.com/questions/1098473/rest-vs-rpc – Chuidiang
을 참조하십시오. 그렇지 않으면 REST. –