Я использую WebApi и Xamarin Forms для мобильного приложения.Я использую встроенную аутентификацию пользователя / возможности учетной записи WebApi, но я не уверен, как анализировать ошибки из ответа BadRequest с ошибками ModelState.
В настоящее время AccountController имеет следующее:
if (!ModelState.IsValid)
{
logger.Info("ModelState not IsValid");
logger.Error(ModelState.ToString);
return BadRequest(ModelState);
}
Это затем возвращает все ошибки состояния модели (адрес электронной почты не верный, пароли не совпадают и т.
var response = await repository.PostAsync<SignUpModel>
(builder.ToString(), model, "");
Репозиторий:
public async Task<T> PostAsync<T>(string uri, T data, string authToken = "")
{
try
{
HttpClient httpClient = CreateHttpClient(authToken);
var content = new StringContent(JsonConvert.SerializeObject(data));
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
string jsonResult = string.Empty;
var responseMessage = await httpClient.PostAsync(uri, content);
if (responseMessage.IsSuccessStatusCode)
{
jsonResult = await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false);
var json = JsonConvert.DeserializeObject<T>(jsonResult);
return json;
}
if (responseMessage.StatusCode == HttpStatusCode.Unauthorized)
{
throw new UnauthorizedAccessException();
}
else if (responseMessage.StatusCode == HttpStatusCode.PreconditionFailed)
{
throw new Exception(responseMessage.ReasonPhrase);
}
else
{
throw new Exception(responseMessage.StatusCode.ToString());
}
}
catch (Exception e)
{
throw e;
}
}
SignUpModel:
public class SignUpPageModel
{
public int MobileNumber { get; set; }
public string FirstName { get; set; }
public string Gender { get; set; }
public DateTime DateOfBirth { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public string ConfirmPassword { get; set; }
}
Я бы хотел зафиксировать ошибки ModelState, а затем представить пользователю сообщение о том, что ему нужноисправить.