Вызов REST Api Orthanc из Lua возвращает ошибку «URI плохо отформатирован» - PullRequest
2 голосов
/ 14 марта 2019

Я пытаюсь анонимизировать изображения перед отправкой их на другой сервер Orthanc.Согласно документации по анонимизации, Orthanc может анонимизировать изображения через API REST: http://book.orthanc -server.com / users / anonymization.html

Orthanc позволяет анонимизировать одинЭкземпляр DICOM и загрузить полученный анонимный файл DICOM.Пример:

$ curl http://localhost:8042/instances/6e67da51-d119d6ae-c5667437-87b9a8a5-0f07c49f/anonymize -X POST -d '{}' > Anonymized.dcm

Согласно странице документации по сценариям Lua, сценарии Lua могут использовать API-интерфейс REST:

LuaСкрипты имеют полный доступ к REST API Orthanc

На этой странице описано, как использовать вызов REST API из Lua:

функции:

    RestApiGet(uri, builtin)
    RestApiPost(uri, body, builtin)
    RestApiPut(uri, body, builtin)
    RestApiDelete(uri, builtin)

В аргументах uri указывается URI, для которого выполняется запрос, а body - строка, содержащая тело запроса POST / PUT.

Это означает, что я должен иметь возможность вызыватьREST API от Lua, объединив функции выше.

Однако при вызове RestApiPost, как описано в документации.

instances = RestApiGet(http://localhost:8042/instances, true)

я получаю следующую ошибку

E0313 17:40:40.851840 LuaScripting.cpp:358] Lua: Badly formatted URI
E0313 17:40:40.851884 LuaScripting.cpp:361] Lua: Error in RestApiPost() for URI: http://localhost:8042/instances/b38a8ef0-909f8ac0-7eca907a-75c98187-8e5339f4/anonymize

Стоит отметить, что я могу правильно вызывать эту конечную точкуиз curl и из моего браузера.Удаление раздела 'http://' не решило проблему.

1 Ответ

1 голос
/ 14 марта 2019

Функция RestApiGet и ее семейство ожидают, что разработчик отформатирует параметр uri без 'http://localhost:8042' следующим образом:

'/instances'

Эти функции работают только для использования REST API, предоставляемого Orthanc.скрипт Lua запущен, поэтому он уже знает, что вы будете использовать localhost, и он будет автоматически использовать правильную схему http и порт 8042.

Как описано в http://book.orthanc -server.com /users / lua.html # general-target-functions , функция HttpGet (url, headers) и ее семейство являются общей формой этой функции и позволяют разработчику запрашивать любую конечную точку http.

...