2012-04-06 2 views
21

내가 작업하고있는 새 사이트 용 API를 만들기 시작했습니다.REST에 대한 공용 API 대체품으로서의 드리프트?

원래 정상적인 REST API로 만들고 싶었지만 여러 클라이언트 라이브러리를 한 번에 컴파일 할 수있는 능력이 얼마나 좋을지 생각했습니다.

일반 API, 소켓 및 모두를위한 실행 가능한 옵션입니까, 아니면 REST를 사용해야합니까?

그리고 만약 REST가 여러 클라이언트 라이브러리를 생성하기위한 최선의 접근법이라면, 아니면 그냥 내려 가서 더러워서 실제로 써야할까요?

그렇다면 Thrift라면 라이브러리를 컴파일하고 다운로드 링크 만 제공하거나 개발자에게 .thrift 파일을 제공하여 자신의 라이브러리를 생성 할 수 있습니까?

참고 : API 용 스 레프 사양 파일을 만들려면 여전히 작은 사이트입니다.

+0

다음에 달려 있습니다 : * 누가 연결하면 * 어떻게 *? (개인적으로, "표준"* RPC * 서버가 없더라도 ProtocolBuffers가 더 훌륭하고 더 잘 설계된 것으로 나타났습니다.보다 정교한 RPC의 경우 ICE와 같은 것이 있지만 * 누가 * 연결할 것인지 * 방법 * ?) –

+0

그래서 Google Buffer에서는 객체 유형을 정의하고 http를 직렬화하고 보낼 수 있습니다. JSON으로 대체되었지만 클라이언트가 기대하는 유형이 정의 된 것과 비슷합니까? PHP에서 이것에 대한 경험이 있습니까? –

+2

프로토콜 버퍼는 이진 직렬화 프로토콜입니다. Thrift가 그렇듯이. (Thrift는 서비스 엔드 포인트 구현을 포함하기 때문에 "올인원"패키지에 불과합니다.) [RPC 지원은 (https://developers.google.com/protocol-buffers/docs/proto#services)에서 설계되었으므로] ProtocolBuffers의 RPC 끝점에 대한 지원이 있지만 "표준"서버는 없습니다 이행. 그러나 적절한 RPC 끝점을 제공하는 프로젝트가 있습니다. –

답변

12

먼저 REST와 Thrift는 오렌지에 사과입니다. 전자는 일반 스타일로, 후자의 특정 이진 RPC 시스템입니다.

공용 인터페이스의 경우 표준 텍스트 형식 (일반적으로 JSON 또는 XML)을 사용하는 REST가 더 적합하다고 생각합니다. 어떤 언어 나 플랫폼에서도 쉽게 액세스 할 수 있으므로 비록 많은 플랫폼에서 Thrift 클라이언트가 있지만 그것은 여전히 ​​더 많은 작업입니다. 또한 특정 액세스 스타일을 클라이언트에 강제로 지정하므로 특정 Thrift 클라이언트 라이브러리를 사용해야합니다.

그럼 질문은 정확히 무엇을 얻으려고합니까? 그곳에서 정확히 "차갑다"고 생각하는 것은 무엇입니까? 신기술로 연주하고 싶다면 그다지 이상한 것은 없지만 먼저 그 곡을 가지고 놀아야한다.

+0

여러 가지 일을보고 있습니다. Rest API와 Java 라이브러리를 구축하고 이것이 나를 위해 할 수 없는지 궁금해지기 시작 했습니까? 하지만 REST가 API에 액세스하는 클라이언트 중 가장 유용하다고 동의합니다. 그러나 도서관 당이 모든 일은 어려움처럼 보입니다. API의 출력에서 ​​다른 매개 변수를 객체에 추가하면 값에 대한 모든 클라이언트 라이브러리를 업데이트해야하며 실수가 발생합니다. 어떤 충고 ? –

+2

Trhift, N'est pas와 동일합니다. 스키마를 수정해야하며, 모든 사람들이 이것을 새로운 클래스로 재 컴파일해야합니다 ... Java에서는 REST, 공유 할 수있는 POJO를 사용합니다. 데이터 바인딩 패키지 (JSON 용 Jackson, XML 용 JAXB)는 직렬화/직렬화를 훌륭하게 처리 할 수 ​​있습니다. 그리고 기본 HTTP 클라이언트 (Apache 또는 async-http-client); 또는 더 나은 아직, 저지 - 클라이언트, 액세스를 간단하게 만들 수 있습니다. – StaxMan

+0

감사합니다. 정상적인 나머지 API를 작성하고 맞춤 라이브러리를 만드는 것으로 끝 맺었습니다. –

10

당신의 API가 REST와 수용 가능한 성능으로 표현할 수있을만큼 단순하다면, REST 기반 API를위한 클라이언트 코드를 작성하는 데 일반적으로 장애물이 적기 때문에 REST를 사용하는 것이 좋습니다.

반면에 REST는 복잡성 또는 성능 문제가있는 경우 절약 또는 기타 적절한 조치를 취하십시오.

0

다른 라이브러리를 직접 개발할 경우 동일한 배가 필요합니다. REST는 사람들이 도서관 없이도 사용할 수 있다고 생각한다. 반면에 Thrift가 좋아하는 것이 바이너리라면 json도 비슷한 방식으로 사용할 수 있습니다. 자세한 내용은 여기를 확인하십시오. http://bsonspec.org/

0

REST의 가장 큰 장점 중 하나는 클라이언트 라이브러리를 작성하십시오. 당신은 단지 엔드 포인트의 목록에 devs를 가리킬 수 있고 거기에서 그것을 파악할 수 있어야합니다. 잘못 설계된 REST 서비스 중 일부는 클라이언트 라이브러리를 제공하여 추잡함을 피할 수 있지만 API가 간단하고 잘 설계된 경우 필요하지 않습니다.

관련 문제