Допустим, вы публикуете файлы XML на ресурс, например, так:
POST / валидатор
Тип содержимого: application / xml
Если объект запроса не может проанализировать как тип носителя, в котором он был представлен (т.е. как application / xml), неверный статус 400 - это правильный статус.
Если он синтаксически анализируется как тип носителя, в котором он был представлен, но он не проверяется на соответствие какой-либо требуемой схеме или имеет иную семантику, которая делает его недоступным для обработки ресурсом, на который он отправлен, - тогда 422 Непроцессируемый объект является лучшим (хотя вам, вероятно, следует сопровождать его более конкретной информацией об ошибках в ответе об ошибке; также обратите внимание, что она технически определена в расширении HTTP, WebDAV, хотя довольно широко используется в API-интерфейсах HTTP и более подходит, чем любой из других состояний ошибок HTTP. когда есть семантическая ошибка с представленной сущностью).
Если он передается в виде медиа-типа, который подразумевает определенную схему поверх xml (например, как application / xhtml + xml), тогда вы можете использовать 400 Bad Request, если он не проходит проверку по этой схеме. Но если его тип мультимедиа - обычный XML, то я бы сказал, что схема не является частью типа мультимедиа, хотя это немного серая область; если файл xml указывает свою схему, вы можете интерпретировать проверку как часть синтаксических требований для application / xml.
Если вы отправляете файлы XML через отправку форм multipart / form или application / x-www-form-urlencoded, то вам придется использовать 422 Unprocessable Entity для всех проблем с файлом XML; 400 будет подходящим, только если есть синтаксическая проблема с основной загрузкой формы.