def METHOD_NAME(
    self,
    method,
    url,
    data=None,
    qparams=None,
    jsonreq=True,
    headers: Optional[dict] = None,
):
    headers = headers or {}
    if qparams:
        url = "%s?%s" % (url, urllib.urlencode(qparams, True))
    if jsonreq:
        prod = _JsonProducer(data)
        headers["Content-Type"] = ["application/json"]
    else:
        prod = _RawProducer(data)
    if method in ["POST", "PUT"]:
        response = yield self._create_request(
            method, url, producer=prod, headers_dict=headers
        )
    else:
        response = yield self._create_request(method, url)
    body = yield readBody(response)
    defer.returnValue(json.loads(body))