Как отформатировать команду CURL для Powershell - PullRequest
0 голосов
/ 08 октября 2019

Я следую инструкции GitHub API с Powershell и до раздела аутентификации:

curl -i -u your_username -d '{"scopes": ["repo", "user"], "note": "getting-started"}' \
   https://api.github.com/authorizations

Команда не выполнена.

Примечания:

  • для удобства я передаю "username:password" вместо your_username (да, пароль теперь сохраняетсягде-то как простой текст)
  • Я удалил \ char (кажется избыточным?) .

Получившаяся команда: (curl -i -u SlowLearner:############# -d '{"scopes": ["repo", "user"], "note": "getting-started"}' https://api.github.com/authorizations) работает в терминале Ubuntu, но не работает в Powershell (проблемы с синтаксическим анализом JSON, см. Ниже).

Вопрос: Как мне ввести команду, чтобы она работала в Powershell (что является требованием) ?

Я пытался убежать: двойные кавычки, квадратные скобки и фигурные скобки в различных комбинациях, но безуспешно. Я также пытался поменять кавычки ( т.е. " -> ' и ' -> ").

В Powershell команда завершается неудачно, какэто:

C:\Users\SlowLearner\Desktop> curl -i -u SlowLearner:############# -d '{"scopes": ["repo", "user"], "note": "getting-started"}' https://api.github.com/authorizations
HTTP/1.1 400 Bad Request
Date: Tue, 08 Oct 2019 05:53:32 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 148
Server: GitHub.com
Status: 400 Bad Request
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4988
X-RateLimit-Reset: 1570516910
X-GitHub-Media-Type: github.v3; format=json
Access-Control-Expose-Headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type
Access-Control-Allow-Origin: *
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
X-Frame-Options: deny
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Referrer-Policy: origin-when-cross-origin, strict-origin-when-cross-origin
Content-Security-Policy: default-src 'none'
X-GitHub-Request-Id: 66XX:38XX:FXXFXX:1XXACXX:5XXC24XX
{
  "message": "Problems parsing JSON",
  "documentation_url": "https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization"
}

Примечание:

3-й пример в документации : скручивание работало в Powershell ДО -iиспользовался переключатель (curl -i https://api.github.com/users/defunkt), исправьте, запустив: remove-item alias:\curl


РЕДАКТИРОВАТЬ: Powershell просто пытается быть полезным ...

Эточастичный ответ;( ec.haxx.se / cmdline.html ) дает некоторое представление об обеих проблемах (псевдонимы и кавычки):

Командные строки, кавычки и псевдонимы

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

Один способ, которым системы командной строкиотличается, например, то, как вы можете заключать в кавычки аргументы, такие как вставка пробелов или специальных символов. В большинстве Unix-подобных оболочек вы используете двойные кавычки (") и одинарные кавычки (') в зависимости от того, хотите ли вы разрешить расширение переменных или нет в строке в кавычках, но в Windows нет поддержки версии с одинарными кавычками.

В некоторых средах, таких как PowerShell в Windows, авторы системы командной строки решили, что они знают лучше и «помогают» пользователю использовать другой инструмент вместо curl при вводе curl, предоставляя псевдоним, который имеет приоритет при выполнении командыДля правильного использования curl с PowerShell необходимо ввести его полное имя, включая расширение: «curl.exe».

Таким образом, нелогично, когда одинарные кавычки (не поддерживаются) заменяются двойными кавычками, «проблемы синтаксического анализа JSON» исчезают, но команда все равно не работает ...

Не уверен, что делать с этим сообщением об ошибке; столбец 10 - 10-й символ?

curl: (3) [globbing] bad range in column 10     //   WHAT IS COLUMN 10?

<snip>

{
  "message": "Validation Failed",
  "errors": [
    {
      "resource": "OauthAccess",
      "code": "missing_field",
      "field": "note"
    }
  ],
  "documentation_url": "https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...