Вызов API REST на сервере .NETCore - PullRequest
0 голосов
/ 30 мая 2018

Я не гуру Linux, и использование curl для меня слишком сложно.Поэтому я нашел httpie и попытался вызвать один из моих собственных REST-серверов, написанных на C # для .NETCore 2 и работающих на Docker под CentOS 7.

У меня есть рабочий скрипт Powershell в Windows, и я пытаюсь перенести его наbash-скрипт с использованием httpie, к сожалению, безуспешно.

API создает файл на сервере и возвращает его как octet-stream.Заголовки на сервере определены следующим образом:

        Options = new Dictionary<string, string>
        {
            {"Content-Type", "application/octet-stream"},
            {"X-Api-DocType", filetype},
            {"X-Api-DocLength", responseStream.Length.ToString()}
        };

Мой POWERSHELL скрипт (который работает нормально) выглядит так:

$request = @{
    Namespace = "MyApplication.MessagingApi"
    Version = "current"
    DataDefinitionLanguage = "Csharp"
    MakePartial = $false
    MakeVirtual = $false
}
$docPath = "D:\Projects\AccountingApiMessageDefinitions.cs"
$Url = "http://172.16.63.241:6083/bbopman/messaging/apireferences"
$response = Invoke-WebRequest -Method Get -Uri $Url -Body $request
Set-Content -Path $docPath -Encoding Byte -Value $response.Content

Я перенес это наскрипт bash выглядит следующим образом:

#!/bin/bash
url="http://172.16.63.241:6083/bbopman/messaging/apireferences"
request="Namespace=='MyApplication.MessagingApi' Version=='current' DataDefinitionLanguage=='Csharp'"
http -d GET $url $request > ~/AccountingApiMessageDefinitions.cs

Я получаю сообщение BAD REQUEST, но на сервере вызов успешно обрабатывается.Итак, я думаю, что я делаю что-то не так при чтении ответа, но не знаю что .... Вот вывод в моей оболочке:

$ ./ExecuteRestCall.sh 
HTTP/1.1 400 Bad Request
Content-Type: text/html
Date: Wed, 30 May 2018 18:45:50 GMT
Server: Kestrel
Transfer-Encoding: chunked
Vary: Accept
X-Powered-By: ServiceStack/5.02 NETStandard/.NET

Может кто-нибудь сказать мне, как я правильно это называю сОболочка Linux?Большое спасибо.

1 Ответ

0 голосов
/ 30 мая 2018

Вам не нужны кавычки для значений параметров для httpie.Отправляйте их без кавычек.

request="Namespace==MyApplication.MessagingApi Version==current DataDefinitionLanguage==Csharp"

Кроме того, вы, похоже, пропускаете параметры MakePartial и MakeVirtual в версии сценария оболочки.

Кстати: "на серверевызов успешно обработан "- это не может быть правдой.Состояние неверного запроса возвращается сервером, а не то, что происходит на клиенте.

...