2010-03-04 3 views
3

나는 발가락을 RESTful 한 물에 쑤셔 넣고 있으며 RESTful 서비스에서 진정으로 "액션"지향적 인 호출을 처리하는 방법에 대한 "만족스러운"솔루션을 찾을 수 없습니까? 내 사고는 두 부분으로 나눌 수 있습니다.순전히 "액션"호출을위한 가장 깨끗한 RESTful 디자인?

1) 트랜잭션 호출 : ActionTransactor를 사용하여 리소스로 게시물을 가져오고, 매개 변수를 업데이트 한 다음 PUT으로 커밋한다는 아이디어를 이해합니다 (장소 및 Orilly RESTful 웹 서비스에 설명되어 있음). 책) ..하지만 나는 영원히 존재하는 주와 URL을 유지하는 아이디어로 고투 .. 만약 우리가 정말 정직하게 트랜잭션을 유지할 필요가 없다면 우리는 리소스 URI를 죽일 수 있습니까? URI가 만료되어야하거나 만료되는 transient URI가 될 수 있습니까?

2) 비 트랜잭션 호출 : 여러 자원에 걸쳐 있지만 어떤 자원이 여러 워크 플로우를 수행하는 호출 일 수 있습니다. 대규모 aggreget 또는 다시 색인화하는 블로그 또는 일부 "순전히"조치처럼 캐시 된 값을 계산하여 다시 생성 할 수도 있습니다.

어쨌든이 커뮤니티에 대한 궁금증이 있습니다 ... 지금까지 오버로드 포스트는 파트 2를 처리하는 가장 깨끗한 방법이라는 것을 읽었습니다. 그러나이 접근법에 대한 논란과 동등한 양의 논쟁이 있습니다 게다가. 그리고 (나에게) 그것은 내가 RESTful API의 주요 디자인 목표 중 하나 인 자체 문서화가 아니었다.

+0

조쉬, 당신은 그 질문을 바꿔 수 있습니까? 당신이 묻고 자하는 것을 파악하는 것이 다소 어려워 보입니다. 예 : "진정한 행동 중심의 전화"는 무엇입니까? 나에게 –

+0

액션 중심의 호출은, 예를 들면, 혹은 복잡한에 간단한 결과를 확인 계산 된 값을 다시 계산하는 자원을 강제로 당신은 농구가 자원으로 설명 할 수 있지만 이동해야 하나 .. 입니다 검색어 (예 : Facebook API의 pages.isFan) .. –

답변

1

1). 상태가있는 URI를 영원히 유지하기 : 웹 사이트를 고려하십시오. 그것은 몇 페이지 있습니다. 일부는 제거되고 우리가 액세스하려고하면 404가됩니다. 예를 들어 고객이있는 데이터베이스를 생각해보십시오. 우리의 RESTful 접근자는 http://myserver/customer/12345과 같은 URI를가집니다. 고객이 압축을 풀면 404를 반환 할 수 있습니다. 나에게 상당히 합당한 것 같습니다. URI는 문법적으로 유효 할 수 있다는 점에서 일시적이지만 자원이 오래 되었다면 시스템은 잘 정의 된 동작을합니다. 나는 편안한 서비스를위한 오류 처리가 중요한 고려 사항이라고 생각한다. 나는 이것을 상담한다. here

2). REST 모델에 맞지 않는 동작 : PUT 또는 POST가 가장 적합한 방법인지는 잘 모르겠습니다. 리소스가 요청이라는 것을 생각하면 어떨까요? 뭔가해야할까요? 그래서 우리는 (단지 시스템에서 생성 된 ID를 포함 고객 정보를 반환 할 수 고객을 만드는 등의) 고유 ID를 포함하는 요청 페이로드를 반환 할 수 있습니다

http://myserver/request/cacheupdate 

이에/POST를 둘 수 있었다. 그런 다음 요청 자원을 사용하여 고유 ID를 사용하여 요청이 완료되었는지 여부를 판별 할 수 있습니다.

http://myserver/request/12345 

이렇게하면 장시간 실행되는 요청의 상태를 추적 할 수 있습니다.

관련 문제