2014-10-14 7 views
0

나는 the link을 따라 jsonrpc2를 시도합니다. 가 난 다음 실행jsonrpc에서 "method"를 정의하는 방법은 무엇입니까?

def greeting(name): 
return dict(message="Hello, %s!" % name) 

hello.py라는 이름의 파일이

runjsonrpc2 hello 

내 코드는 서버가 응답을 가지고

import jsonrpc2 
import requests 
import json 
url = "http://localhost:8080/" 
headers = {'content-type': 'application/json'} 
payload = { 
    "method": "greeting", 
    "params":{"name":"yy"}, 
    "jsonrpc": "2.0", 
    "id":1.0, 
} 

response = requests.post(url, data=json.dumps(payload), headers=headers).json() 

,하지만 난

u'error': {u'code': -32601, u'message': u'Method Not Found'} 
있어

어떻게해야합니까? "방법"을 정의합니까?

답변

0

짧은 답변 : 그것은 무엇을

runjsonrpc2를 찾고 :

payload = { 
    "method": "hello.greeting", 
    "params":{"name":"yy"}, 
    "jsonrpc": "2.0", 
    "id":1.0, 
} 

긴 대답

: 당신은 메소드 이름에 모듈 이름을 씁니다

인수로 전달 된 모듈은 모든 메소드를 해당 호출 가능 요소에 맵핑하는 것입니다. 이것은 add_module 방법으로 수행됩니다

def add_module(self, mod): 
    name = mod.__name__ 
    for k, v in ((k, v) for k, v in mod.__dict__.items() if not k.startswith('_') and callable(v)): 
     self.methods[name + '.' + k] = v # <-- here it is the key point 

그리고 메소드 이름으로 무엇을 사용합니까? 메서드 이름에 모듈 이름을 사용합니다. 실제로는 greeting 메서드가 있지만 hello.greeting 메서드가 있기 때문에 u'error': {u'code': -32601, u'message': u'Method Not Found'} 오류가 발생합니다.