如何在jsonrpc中定义“方法”?

2024-10-02 06:23:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我跟随the link来尝试jsonrpc2。 我有一个名为你好.py在

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

然后我就跑

^{pr2}$

我的代码是

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'}

我应该如何定义“方法”?在


Tags: thenamepyimportjsonurlmessagereturn
1条回答
网友
1楼 · 发布于 2024-10-02 06:23:46

先简短回答:

您需要在方法名前面加上模块名:

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

长回答:

查看runjsonrpc2,它对作为参数传递的模块所做的是将其所有方法映射到相应的可调用。这是在add_module方法中完成的:

^{pr2}$

它用什么作为方法名?它使用模块名dot方法名。所以您得到了一个u'error': {u'code': -32601, u'message': u'Method Not Found'}错误,因为实际上不存在greeting方法,而是hello.greeting。在

相关问题 更多 >

    热门问题