pythonjsonrpc2.0api

2024-09-29 22:37:59 发布

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

我正在使用JSON rpc1.10.3lib在Python上创建一个JSON-rpcapi。在

我做了服务器和客户端。在

在服务器上,我做了两个方法,连接到MySQl数据库,检索我需要的字典并将它们添加到dispatcher中。在

但是当我运行客户机时,我得到的是405响应(方法不允许)。在

怎么了?在

服务器

from werkzeug.wrappers import Request, Response
from werkzeug.serving import run_simple
from jsonrpc import JSONRPCResponseManager, dispatcher

HOST = 'localhost'
PORT = 80

def __init__(self, conn):
    self.conn = conn

@dispatcher.add_method
def get_detailed_usage(self, serviceRef, fromDate, toDate, excludeCallsCoveredByBundleAllowance):
    sql_where = []
    sql_vars = []
    if serviceRef is not None:
        sql_where.append("pc.service_ref={}").format(serviceRef)
        sql_vars.append(serviceRef)
    if fromDate is not None:
        sql_where.append("rc.start_time={}").format(fromDate)
        sql_vars.append(fromDate)
    if toDate is not None:
        sql_where.append("rc.end_time={}").format(toDate)
        sql_vars.append(toDate)
    if excludeCallsCoveredByBundleAllowance is not None:
        sql_where.append("excludeCallsCoveredByBundleAllowance={}").format(excludeCallsCoveredByBundleAllowance)
        sql_vars.append(excludeCallsCoveredByBundleAllowance)
    sql_query = """
                SELECT...
                FROM...
                JOIN...
                ON...
                """
    if sql_where:
        sql_query += " WHERE" + " AND ".join(sql_where)
    cursor = self.conn.cursor()
    cursor.execute(sql_query, *sql_vars)
    result = cursor.fetchall()

    return dict(result)


@dispatcher.add_method
def get_summary_usage(self, serviceRef, fromDate, toDate, excludeCallsCoveredByBundleAllowance):
    sql_where = []
    sql_vars = []
    if serviceRef is not None:
        sql_where.append("pc.service_ref={}").format(serviceRef)
        sql_vars.append(serviceRef)
    if fromDate is not None:
        sql_where.append("rc.start_time={}").format(fromDate)
        sql_vars.append(fromDate)
    if toDate is not None:
        sql_where.append("rc.end_time={}").format(toDate)
        sql_vars.append(toDate)
    if excludeCallsCoveredByBundleAllowance is not None:
        sql_where.append("excludeCallsCoveredByBundleAllowance={}").format(excludeCallsCoveredByBundleAllowance)
        sql_vars.append(excludeCallsCoveredByBundleAllowance)
    sql_query = """
                SELECT...
                FROM...
                JOIN...
                ON...
                """
    if sql_where:
        sql_query += " WHERE" + " AND ".join(sql_where)
    cursor = self.conn.cursor()
    cursor.execute(sql_query, *sql_vars)
    result = cursor.fetchall()

    return dict(result)

def application(request):
    response = JSONRPCResponseManager.handle(request.data, dispatcher)
    return Response(response.json, response.http_status, mimetype='application/json')


if __name__ == '__main__':
    run_simple(HOST, PORT, application)

客户

^{pr2}$

Tags: nonerefformatsqlifisservicenot

热门问题