2009-07-08 3 views
2

Ruby on Rails의 RESTful 메소드가 예상하는 매개 변수를 게시하는 방법이 있습니까? SOAP을 사용하여 WSDL을 사용할 수 있지만 RoR은 RESTful 서비스 용 WADL 또는 WSDL 2.0을 구현합니까? 편집 : ActionWebService를 사용하는 SOAP 기반 솔루션을 알고 있습니다. 나는 당신의 레일 2.3.2를 사용하고 다음 명령Ruby on Rails의 RESTful 서비스 용 WADL/WSDL 2.0

를 사용하여 Actionwebservice 보석을 설치하려고하면 https://wadl.dev.java.net/

답변

1

대답은 "아니오"입니다 읽을 수 있습니다; Rails는이를 수행하는 방법을 제공하지 않습니다. 이론적으로는 가능하지만 RESTful HTTP에 대한 지원은 매우 제한적입니다 (예 : 하이퍼 미디어를 지원하지 않음). WSDL 2.0은 논쟁의 여지없이 아무도 사용하지 않습니다. WADL은 REST 커뮤니티에서도 강력한 수용 문제를 가지고 있습니다. Java Jersey 프레임 워크를 제외하고는 구현을 전혀 알지 못합니다.

+0

WADL을 생성 할 수 있다고해도 사용할 수 있습니까? 지금 할 수없는 일은 무엇을 할 수 있겠습니까? –

+0

클라이언트가 서명을 기반으로 스텁을 자동으로 생성 할 수 있도록 RESTful 서비스에 미리 메소드 서명을 제공하는 방법이 있는지 알고 싶습니다. 이것이 현재 행해질 수 있는지 나는 모른다. –

+1

루비가 메서드를 호출하기 위해 어딘가에 정의 된 인터페이스를 필요로하지 않는다는 사실을 감안할 때, 그 스텁이 정확히 당신을 사는 이유는 무엇입니까? –

4

예, 귀하의 요구 사항에 대한 솔루션, 레일에 Actionwebservice 보석를 설치하는의 RoR에 동등한로 다스 려했다 1 단계 :

$ gem install datanoise-actionwebservice --source http://gems.github.com 

2 단계 :는 conf의/environment.rb에

0123에 보석을 추가
config.gem 'datanoise-actionwebservice', :lib => 'actionwebservice' 

3 단계 : 당신은/응용 프로그램/서비스

4 단계에서 생성 된 웹 서비스 파일을 볼 수

$ ./script/generate web_service webservice_name 

Web 서비스 생성 : 컨트롤러 수정

class YourController < ApplicationController 
    wsdl_service_name 'webservice_name' 
    web_service_api webservice_nameApi 
    web_service_scaffold :invocation if Rails.env == 'development' 

def add(name, value) 
    Your.create(:name => name, :value => value).id 
end 

end 

5 단계 : 응용 프로그램에서 API를 클래스를 수정/서비스

class WebserviceNameApi < ActionWebService::API::Base 
    api_method :add, :expects => [:string, :string], :returns => [:int] 

end 

6 단계 : 당신은 WSDL 파일

$ ./script/server 
$ curl http://localhost:3000/controller/wsdl 
+0

@Srinivaslyer님께 감사드립니다. 그러나 SOAP 기반 솔루션을 피하려고합니다. RESTful 서비스를 사용하는 경우 서비스가 작동하는 방식을 모르는 클라이언트가 서비스가 예상하는 매개 변수를 알 수있는 방법이 없습니다. RoR에서 WADL을 사용하여 예상되는 매개 변수를 게시하는 현재의 방법이 있는지 궁금합니다. –

+0

@vdrolia : 이것은 SOAP 기반 솔루션입니다. actionwebservice는 SOAP 또는 xmlrpc를 사용합니다. –

0

REST Describe & Compile을 사용하여 WADL을 기반으로 Ruby 클라이언트를 생성 할 수 있습니다. Google 문서에서 이에 대한 아주 상세한 문서를 찾을 수 있습니다.