2012-03-03 2 views
2

나는 REST와 함께 할 수있는 좋은 방법을 생각할 수없는 몇 가지 웹 서비스 호출을 가지고있다. 그들은 데이터 조작보다는 '수행 중'의 방법이라고 느낀다.이 REST 구현에 어떤 리소스를 사용해야합니까?

하나는 기본적으로 서버에 "xyz 사용자에게 확인 전자 메일을 다시 보냅니다."라고 말하면서 SOAP에서는 ResendConfirmationEmail(user)이 될 수 있습니다. 이것이 REST에서 어떻게 구현 될 수 있는가? URI에서 어떤 리소스 이름을 사용해야합니까?

또 하나는 더미 데이터로 데이터베이스를 초기화하고 결과 테이블과 행 수를 반환하므로 SOAP에서는 InitializeDatabase() 일 수 있습니다. 다시 말하지만, URI는 REST에서 어떻게 보이고, 하나의 호출 (초기화 및 데이터베이스 요약 정보 반환) 또는 두 번의 호출 (하나는 초기화, 하나는 데이터베이스 가져 오기 요약 정보)?

답변

2
  1. 재전송 (또는 이와 관련하여 보내는)은 멱등 열이 아닙니다. 이는 POST에 대한 즉각적인 표시입니다. 당신이 정말로 위하고 넘어 가고 싶어하고, 앱 내부 기록의 일종을했다거나 메일 큐에 대한 인터페이스를 한 경우 URI에 관해서는, 내가

    POST /user/1234/mailbox 
    

    의 라인을 따라 뭔가를 추천 할 것입니다, 그것은 수도 새로 생성 된 리소스 (예 : GET /user/1234/mailbox/<EMAIL ID>)에 GET 요청을 보내고 이메일 상태를 확인하는 것도 좋습니다. 이것은 분명히 종소리의 휘슬 기능이지만, 비정상적인 상황에서도 리소스의 RESTful 사고 방식을 생각하게합니다.

  2. # 1과 달리 DB를 초기화하는 것은 멱등 원으로 간주되지만 분명히 안전하지 않습니다. PUT은 자연적인 후보자입니다. Mr. Fielding himself put it으로, PUT은 반드시 어떤 것을 저장하는 것을 의미하지는 않습니다. 이것은 그 예입니다. URI는 시스템 또는 응용 프로그램을 식별하는 URI를 권합니다. 어쩌면 /my-app-name 또는 /conf 또는 /system과 같은 일반적인 것일 수 있습니다. 심지어 /을 사용하여 논쟁 할 수도 있습니다. PUT 요청 본문에 구성 옵션을 전달할 수도 있습니다.

    시스템의 상태를 얻는 방법에 관해서는 동일한 URI에 별도의 GET 요청을하는 것이 좋지만, 왜 이와 같은 요약을 포함 할 수 없는지 생각할 수는 없습니다. PUT 응답의 일부

    사이드 노트 :이 안전하지 않은 무언가로 확실한 인증 레이어가 있는지 확인하고 싶습니다..

+0

안녕하세요. 답장을 보내 주셔서 감사합니다. '/ my-app-name'으로 PUT을 조금 확장 할 수 있습니까? 해당 응용 프로그램에 대해 다른 작업을 수행하는 것과 달리 데이터베이스를 재설정하겠다고 서비스에 표시하는 방법을 제안 하시겠습니까? – Jez

+0

그래서이 경우 각 "구성"또는 "서비스"를 리소스로 간주합니다. '/ my-app-name/db' 또는'/ service/db' 나'/ conf/db'와 같이 조금 더 구체적으로 만들 수 있습니다. 그렇게하면 앱과 관련된 다른 서비스도 관리 할 수 ​​있습니다. RESTful하게 관리되는 RESTful 앱은 꽤 좋은 것입니다. – nategood

+0

나는 URI를 데이터베이스의 개념에 매핑하는 아이디어를 이해한다. 나는 그 URI에 정확히 무엇을 넣을 것인가? DB의 내용이 아니라 단지 "DB 초기화"라고 말하고 실제로 더미 데이터를 제공하지 않기를 원하기 때문입니다. – Jez

관련 문제