Какова лучшая альтернатива для выполнения этого вызова API без использования модуля запросов Python? - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть функция, которая делает GET-запрос к API-интерфейсу REST JIRA, чтобы опустить объект JSON билета JIRA.

Используется модуль запросов. Но я больше не хочу его использовать, потому что в любое время, когда я хочу, чтобы кто-нибудь еще запустил мой скрипт, ему нужно было прыгать через огненные кольца, чтобы получить модуль запросов, потому что они находятся за корпоративным прокси и у них нет времени в дополнительной работе.

Таким образом, вместо того, чтобы просить людей делать что-то, на что у них нет терпения или времени, я бы предпочел заменить модуль запросов чем-то другим, чтобы этот сценарий был больше готовым. решение.

Вот что у меня сейчас:

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 голосов
/ 25 апреля 2018

Вот что я придумал.Это работает отлично!

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.

0 голосов
/ 25 апреля 2018

вы можете использовать собственный Python urllib: Какой самый быстрый способ получить HTTP GET в Python? .

но я бы предложил настроить внутренний репозиторий пакетов Python: https://packaging.python.org/guides/hosting-your-own-index/. Это позволит вам использовать любой пакет, который вы хотите, включая пакет JIRA Python: https://github.com/pycontribs/jira

...