'actionwebservice'에 해당되는 글 3건

  1. 2008.10.07 [Rails] action web service에서 함수 이름 관련 문제 해결
반응형
action web service에서 SOAP 서비스의 함수 이름은 apis에 정의된 ****_api.rb 에 정의 된다. 이때 다음과 같이

api_method :함수명, expects => 입력파라미터, :returns => 출력파라미터

의 형태로 정의되며 api_method의 함수명이 SOAP 메소드의 함수명이 된다. api_method의 함수명을 "testMethod"로 소문자로 시작하게 하고, controller에서 def testMethod 와 같이 함수를 정의한 다음 testMethod에 대해서 SOAP 호출을 하게 되면 다음과 같은 에러가 나타난다
ActionWebService::Dispatcher::DispatcherError (no such method 'testMethod' on API TestApi):
action web service에서는 호출하는 SOAP 함수에 대해서 api_method에 정의된 함수를 찾는데 이때 SOAP에서 호출한 함수 이름을 가지고 Ruby에서 구현된 함수를 찾게 된다. 이때 api.rb의 public_api_method_name이라는 함수를 호출하여 호출하는 함수 명을 정의하게 되는데 public_api_method_name함수는 다음과 같다.

def public_api_method_name(name)
          if inflect_names
            name.to_s.camelize
           else
            name.to_s
          end
end


여기에서 보면 들어온 name(SOAP API이름)에 대해서 camelize를 하게 되는데 이렇게 되면 첫 영문자가 대분자가 되게 된다. 이는 Ruby의 함수 명명 규칙과 연관이 있어 보이는데 이렇게 되면 SOAP API에서 소문자로 시작하는 함수를 정의할수가 없게 된다. 따라서 이것을 다음과 같이 변경한다.

def public_api_method_name(name)
            name.to_s
end
반응형
Posted by alias
,