Как отладить мой HTTPie или Postman, чтобы API Akamai FastPurge мог совершать успешные вызовы? - PullRequest
0 голосов
/ 25 марта 2019

Я хотел использовать HTTPie или Postman, чтобы собрать вместе запрос для API Akamai FastPurge, чтобы я мог видеть структуру и HTTP-запрос в целом с целью создания Java-модуля, который создает тот же HTTP-запрос.

Я пробовал несколько учебных пособий, предоставленных Akamai *, но ничего не помогло.Учетные данные для FastPurge API находятся в их собственном файле edgegrid, и я отредактировал config.json HTTPie, как это предложено Akamai.Неважно, используются ли CP-коды или URL-адреса, результат тот же.API имеет авторизацию на чтение и запись, и учетные данные правильно считываются из файла.

Я также пытался использовать Postman, но Postman не интегрирует авторизацию с помощью edgegrid, поэтому я должен сделать это вручную, не знаякак это выглядит.Существует руководство по настройке API Akamai в Postman, но в нем отсутствует критическая часть сценария предварительного запроса. **

*: https://developer.akamai.com/akamai-101-basics-purging, https://community.akamai.com/customers/s/article/Exploring-Akamai-OPEN-APIs-from-the-command-line-using-HTTPie-and-jq?language=en_US, https://developer.akamai.com/api/core_features/fast_purge/v3.html, https://api.ccu.akamai.com/ccu/v2/docs/index.html **: https://community.akamai.com/customers/s/article/Using-Postman-to-access-Akamai-OPEN-APIs?language=en_US

Я получаю сообщение об ошибке в HTTPie:

C:\python>http --auth-type=edgegrid -a default: :/ccu/v3/invalidate/url/production objects:='["https://www.example.com","http://www.example.com"]' --debug

HTTPie 1.0.3-dev
Requests 2.21.0
Pygments 2.3.1
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 22:20:52) [MSC v.1916 32 bit (Intel)]
c:\python\python.exe
Windows 10

<Environment {
    "colors": 256,
    "config": {
        "__meta__": {
            "about": "HTTPie configuration file",
            "help": "https://httpie.org/doc#config",
            "httpie": "1.0.3-dev"
        },
        "default_options": "['--verbose', '--traceback', '--auth-type=edgegrid', '--print=Hhb', '--timeout=300', '--style=autumn', '-adefault:']"
    },
    "config_dir": "%home",
    "is_windows": true,
    "stderr": "<colorama.ansitowin32.StreamWrapper object at 0x066D1A70>",
    "stderr_isatty": true,
    "stdin": "<_io.TextIOWrapper name='<stdin>' mode='r' encoding='utf-8'>",
    "stdin_encoding": "utf-8",
    "stdin_isatty": true,
    "stdout": "<colorama.ansitowin32.StreamWrapper object at 0x066D19D0>",
    "stdout_encoding": "utf-8",
    "stdout_isatty": true
}>
Traceback (most recent call last):
  File "c:\python\lib\site-packages\httpie\input.py", line 737, in parse_items
    value = load_json_preserve_order(value)
  File "c:\python\lib\site-packages\httpie\utils.py", line 7, in load_json_preserve_order
    return json.loads(s, object_pairs_hook=OrderedDict)
  File "c:\python\lib\json\__init__.py", line 361, in loads
    return cls(**kw).decode(s)
  File "c:\python\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "c:\python\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python\Scripts\http-script.py", line 11, in <module>
    load_entry_point('httpie==1.0.3.dev0', 'console_scripts', 'http')()
  File "c:\python\lib\site-packages\httpie\__main__.py", line 11, in main
    sys.exit(main())
  File "c:\python\lib\site-packages\httpie\core.py", line 210, in main
    parsed_args = parser.parse_args(args=args, env=env)
  File "c:\python\lib\site-packages\httpie\input.py", line 152, in parse_args
    self._parse_items()
  File "c:\python\lib\site-packages\httpie\input.py", line 358, in _parse_items
    data_class=ParamsDict if self.args.form else OrderedDict
  File "c:\python\lib\site-packages\httpie\input.py", line 739, in parse_items
    raise ParseError('"%s": %s' % (item.orig, e))
httpie.input.ParseError: "objects:='[https://www.example.com,http://www.example.com]'": Expecting value: line 1 column 1 (char 0)

или что:

C:\python>http POST --auth-type=edgegrid -a default: :/ccu/v3/invalidate/cpcode/production < file.json
usage: http [--json] [--form] [--pretty {all,colors,format,none}]
            [--style STYLE] [--print WHAT] [--headers] [--body] [--verbose]
            [--all] [--history-print WHAT] [--stream] [--output FILE]
            [--download] [--continue]
            [--session SESSION_NAME_OR_PATH | --session-read-only SESSION_NAME_OR_PATH]
            [--auth USER[:PASS]] [--auth-type {basic,digest,edgegrid}]
            [--proxy PROTOCOL:PROXY_URL] [--follow]
            [--max-redirects MAX_REDIRECTS] [--timeout SECONDS]
            [--check-status] [--verify VERIFY]
            [--ssl {ssl2.3,tls1,tls1.1,tls1.2}] [--cert CERT]
            [--cert-key CERT_KEY] [--ignore-stdin] [--help] [--version]
            [--traceback] [--default-scheme DEFAULT_SCHEME] [--debug]
            [METHOD] URL [REQUEST_ITEM [REQUEST_ITEM ...]]
http: error: unrecognized arguments: :/ccu/v3/invalidate/cpcode/production

Типичный успешный ответ выглядит следующим образом:

{
   "httpStatus" : 201,
   "detail" : "Request accepted.",
   "estimatedSeconds" : 420,
   "purgeId" : "95b5a092-043f-4af0-843f-aaf0043faaf0",
   "progressUri" : "/ccu/v2/purges/95b5a092-043f-4af0-843f-aaf0043faaf0",
   "pingAfterSeconds" : 420,
   "supportId" : "17PY1321286429616716-211907680"
}

Я был бы очень признателен, если бы кто-нибудь мог помочь мне исправить мои настройки на HTTPie или Postman или дать мнеполная структура HTTP-запроса Akamai FastPurge, поэтому я могу пропустить хлопот с HTTPie или почтальоном.

Большое спасибо, ваша помощь очень ценится!

...