2009-05-14 1 views
0

의 XML 웹 서비스를 XML-RPC 스타일 요청하는 방법을 식별하는 작업 요소가 파견RPC 메소드의 의미가 오버로드 된 웹 서비스에 대해 REST API를 설계하는 방법은 무엇입니까?

  • 프로세스를 기존.

    < 프로토콜 > < 동작 > 810 </동작 > < 사용자 > ... </사용자 > </프로토콜 파라미터의 개수 변화 >

  • 예 :.

  • XML-RPC 처리기는 810 토큰을 해석하여 두 가지를 의미합니다. 요소 < >이 하위 요소로 < 프로토콜 >의 하위 요소로 수신되면 계정을 생성합니다. 요소 <userExisting>을 대신 수신하면 사용자 로그인을 시도합니다.

    새로운 JSON REST API를 디자인

    나는 하나 REST 엔드 포인트, 예를 들어이 유지하려면 /API /는 foobar
  • 나는 PUT /API /는 foobar/$ {사용자}에 사용자 생성을 번역 할 수
  • 은 DELETE /API /는 foobar/$ {사용자}에 대한 사용자 제거
  • 로그 아웃을 위해와 유사하게 몸 { "영업 이익"로그인 할 :
  • 나의 현재 디자인은 몸 { "로그인" "OP"}로을 포스트 /API /는 foobar/$ {사용자}하는 것입니다 : "logout"}이 전송됩니다.

사람들이 어떻게 생각하십니까? 벽돌 껍질과 부케는 건설적인 의견으로 환영 받는다.

답변

1

RESTful API에 대한 오버로드 된 POST는 피할 수 있으면 약간의 kludge입니다. 로그인을 위해 무국적 상태를 유지하려고합니다. 즉, 클라이언트가 각 요청에 대해 HTTP 인증을 통과해야합니다. 즉, 매번 정확한 인증 헤더를 전달해야합니다. 첫 번째 요청에서 Basic과 같은 일반적인 인증 방법 중 하나를 사용합니다.

1

모든 CRUD 작업의 종점은 URI가 api/users이어야합니다. HTML 4로 작성된 양식에서는 DELETE 및 PUT이 지원되지 않지만 Javascript를 사용하여 통신하는 경우 POST (페이로드에서 _method=PUT|DELETE을 전달)를 통해 생성 및 삭제 작업을 노출하고자 할 수 있습니다.

로그인 할 때 끝점은 api/login이어야하지만 여기서 HTTP 인증을 사용하는 것이 좋습니다.

스택 오버 플로우에 대한 설계 검토를 요청하는 것은 좋지만 잘못된 순서 변경을 피하기 위해 RESTful 아키텍처를 읽는 것이 좋습니다.

+0

+1 잘 넣어. – annakata

+0

나는 HTTP 인증을 사용하고 HTTP 프로토콜이 제공하는 모든 무기를 사용하고 싶지만 빠르게 (예 : HTTP 동사의 최소 수만 사용하는 등) 빠른 처리를 원하는 사람들과 협력하고 있습니다. 당신의 아이디어에 감사드립니다. –

0

어떻게 로그인에 대한이 같은 및 서버가 실제로 원하지 않는 경우 "요청"리소스를 만들 필요는 없지만 나중에 당신의 마음을 바꿀 수 있으며, 원하는

POST /api/foobar/${user}/loginrequests 

POST /api/foobar/${user}/logoutrequests 

로그 아웃에 대한 로그인 및 로그 아웃 기록을 유지하십시오.

+0

내가 아는 바로는 URI에 동작을 넣는 것은 나쁜 습관입니다. –

+1

당신은 절대적으로 옳습니다. 그러나 URI에 작업을 넣지 않았습니다. 내가/RequestLogin을 넣었다면 그것은 행동이 될 것입니다. –

+1

/RequestLogin 또는/loginrequests는 아무런 영향을 미치지 않습니다./0f5cb891-6d64-49e7-9e5d-4b5f8b37f9a8 일 수도 있습니다. 전체 이름/동사의 문제가 아니라 상호 작용 모델입니다. 그것은 냄새가 될 수 있지만 반드시 필요한 것은 아닙니다. – SerialSeb

관련 문제