Например, существует метод действия Web Api:
public HttpMessageResponse Post(UserDto userDto)
{
if (!this.ModelState.IsValid)
{
return this.Request.CreateErrorResponse(
HttpStatusCode.BadRequest, this.ModelState);
}
// ...
}
Клиент отправляет следующий запрос:
HTTP POST: /api/user
{ "username": "me", "password": "Pa$sw0rd" }
И получает ответ:
HTTP 201/Created:
{ "message": "Your request is invalid.",
"modelState": { "userDto.Password": "Your password is too strong." } }
По умолчанию метод действия предоставляет детали реализации путем префикса ошибок модели с именем аргумента, используемым внутри метода действия. Что делать, если клиентские приложения будут жестко задавать это имя префикса при очистке ошибок модели, а затем изменения кода на стороне сервера (например, вы заменили подпись Post(UserDto userDto)
на Post(UserDto dto)
), и все клиентские приложения перестают работать.
Вот почему вам нужно убедиться, что этот префикс удален на стороне сервера. Вопрос в том, как сделать это правильно, без осложнений. Например, вы можете создать собственный сериализатор и удалить эти префиксы во время сериализации. Но для этого вам нужно знать имя аргумента модели, а код вызова может выглядеть примерно так:
public HttpMessageResponse Post(UserDto userDto)
{
if (!this.ModelState.IsValid)
{
return this.Request.CreateCustomErrorResponse(
HttpStatusCode.BadRequest, this.ModelState, modelName: "userDto");
}
// ...
}