2013-10-08 1 views
0

간단한 질문. API 디자인에 관한 기사를 읽고 답을 찾지 못했습니다.RESTful API 디자인 : 내부 상호 작용

API의 종단점은 서로 어떻게 상호 작용해야합니까?

예를 들어, 내가 2 개의 엔드 포인트를 가지고있는 경우 : /category/:name/messages입니다. 예를 들어 메시지에서 카테고리 존재를 확인하는 가장 좋은 방법은 무엇입니까?

1) /messages 처리기의 데이터베이스 쿼리는 다음과 같습니다. SELECT * FROM categories WHERE name = 'test'?

또는 엔드 포인트 /messages 핸들러에서

2) HTTP 요청과 같은 : httpclient.get를 ('/ 카테고리/테스트')?

또는

3) 클라이언트는 모든 범주를 얻을 특정 카테고리의 ID를 얻을 해당 카테고리 ID로 /messages에 요청을 전송해야합니까?

답변

1

질문은 간단하지만 답변이 아닙니다. 한 가지 확실한 점은 결코 (2) 해결책을 사용하지 마십시오. 메소드를 호출 할 수있을 때 http 클라이언트를 사용하여 일부 데이터를 요청하면 API의 성능과 용량이 감소합니다.

/messages에 응답을 작성하려면 (1)을 사용하고 SQL 조회를 호출하는 대신 /category/test에 대한 요청을 처리하는 데 사용 된 것과 동일한 메소드를 호출하는 대신 HTTP를 통하지 않고 로컬로 호출하십시오.

솔루션 (3)은 각 엔드 포인트가 한 가지 유형의 자원만을 담당 할 때 REST 방식입니다. 단점은 클라이언트에서 API로 더 많은 HTTP 요청이 필요할 수 있다는 것입니다.

1

작업을 수행하기 위해 모든 엔드 포인트가 내부 API를 호출하는 방식으로 애플리케이션을 설계해야합니다. 다른 내부에서 하나의 작업을 호출하려면 http 서비스 호출과 같은 다른 접근 방식 대신 해당 내부 API를 사용해야합니다.