在不使用python请求模块的情况下进行此API调用的最佳替代方法是什么?

时间:2018-04-25 14:18:15

标签: python get request jira

我有一个函数向JIRA REST API发出GET请求以下拉JIRA票证的JSON对象。

它使用请求模块。但我不想再使用它,因为任何时候我想让别人运行我的脚本,他们需要跳过火热的箍来获取请求模块,因为他们是公司代理的背后他们没有是时候投入额外的工作了。

因此,我不是要求别人做某事他们没有耐心或时间去做,而是更愿意用其他东西替换请求模块,这样这个脚本就更不合适了。 - 盒子解决方案。

这就是我现在所拥有的:

import requests
import pprint


def pull_jira_info(jira, user, pw, url):
    """
    Arguments:
        jira - the JIRA issue number
        url - the first part of the JIRA server url
        user - JIRA username
        pw - JIRA password
    """
    url += '/rest/api/2/issue/' + jira
    r = requests.get(url, auth=(user, pw), verify=False)
    jira_info = r.json()
    pprint.pprint(jira_info)
    return jira_info

我的猜测是我可以将请求模块与一些其他模块(内置于python中)进行简单交换,该模块可以执行GET请求而无需更改太多代码。

有没有人有一个简单的要求,这不是请求模块?在我当前的函数中实现它会是什么样的?

2 个答案:

答案 0 :(得分:1)

这是我想出的。它完美无缺!

import base64
import json
import pprint
import urllib2


def auth_str(user, pw):
    """
    Arguments:
        user - (Required) jira username
        pw - (Required) jira password
    """
    auth = base64.b64encode('%s:%s' % (user, pw))
    return auth


def pull_jira(jira, user, pw, url):
    """
    Arguments:
        jira - (Required) jira issue number
        user - (Required) jira username
        pw - (Required) jira password
        url - (Required) jira server url
    """
    url += '/rest/api/2/issue/' + jira
    r = urllib2.Request(url)
    r.add_header('Authorization', 'Basic %s' % auth_str(user, pw))
    r.add_header('Content-Type', 'application/json')
    r.get_method()
    jira_data = json.load(urllib2.urlopen(r))
    pprint.pprint(jira_data)
    return _data

是的,有一些我可以做的事情来清理它,但我只是想继续发布一个工作更新,显示我如何用urllib2替换了请求模块。

答案 1 :(得分:0)

您可以使用原生Python var arr = [ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [1, 3, 3, 4, 5, 6, 7, 8, 9, 12], [1, 2, 3, 4, 5, 6, 7, 8, 9, 12], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12], [1, 2, 3, 4, 5, 6, 7, 8, 9, 11], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12], ]; function sortNumericArrays(a, b){ var i, l = a.length > b.length ? a.length : b.length, result = 0; for(i = 0; i < l; i++){ if(undefined === a[i]){ result = -1; i = l; }else if(undefined === b[i]){ result = 1; i = l; }else if(a[i] !== b[i]){ result = a[i] - b[i]; i = l; } } return result; } console.log(arr.sort(sortNumericArrays));What is the quickest way to HTTP GET in Python?

但我建议设置一个内部Python包存储库:https://packaging.python.org/guides/hosting-your-own-index/。这将允许您使用任何所需的包,包括JIRA Python包:https://github.com/pycontribs/jira