Среди данных, которые мое приложение отправляет на сторонний сервер SOA, есть сложные XML-файлы. Владелец сервера предоставляет схемы XML (.xsd
), и, поскольку сервер отклоняет недопустимые XML-файлы с бессмысленным сообщением, мне нужно проверить их локально перед отправкой.
Я мог бы использовать автономный валидатор схемы XML, но он медленный, в основном из-за времени, необходимого для анализа файлов схемы. Поэтому я написал свой собственный валидатор схемы (на Java, если это имеет значение) в форме HTTP-сервера, который кэширует уже проанализированные схемы.
Проблема в том, что в процессе валидации многое может пойти не так. Помимо неожиданных исключений и успешной проверки:
- сервер может не найти указанный файл схемы
- указанный файл может не быть допустимым файлом схемы
- XML недействителен для файла схемы
Поскольку это HTTP-сервер, я хотел бы предоставить клиенту значимые коды состояния. Должен ли сервер отвечать с ошибкой 400 (неверный запрос) для всех вышеупомянутых случаев? Или они не имеют ничего общего с HTTP, и он должен отвечать на 200 с сообщением в теле? Любое другое предложение?
Обновление: основное приложение написано на Ruby, в котором нет хорошей библиотеки проверки схемы XML, поэтому отдельный сервер проверки не требует чрезмерной инженерии.