Asp.net web api Web Api中的自定义错误响应
在Web API控制器上,我具有以下功能:Asp.net web api Web Api中的自定义错误响应,asp.net-web-api,Asp.net Web Api,在Web API控制器上,我具有以下功能: if (!ModelState.IsValid) return BadRequest(); 请求: 我想创建一个自定义错误消息,将错误作为json传递 比如: if (!ModelState.IsValid) return ModelHasErrors(errors); 如何创建自定义错误响应?您可以直接返回所需的任何对象,并将其序列化为JSON。它甚至可以是使用new{} 在客户端,您必须检查是否收到了常规响应或错误对象,这可以通过检查自
if (!ModelState.IsValid)
return BadRequest();
请求:
我想创建一个自定义错误消息,将错误作为json传递
比如:
if (!ModelState.IsValid)
return ModelHasErrors(errors);
如何创建自定义错误响应?您可以直接返回所需的任何对象,并将其序列化为JSON。它甚至可以是使用
new{}
在客户端,您必须检查是否收到了常规响应或错误对象,这可以通过检查自定义错误对象的某些属性来轻松完成。您可以直接返回您想要的任何对象,并将其序列化为JSON。它甚至可以是使用
new{}
在客户端,您必须检查是否收到了常规响应或错误对象,这可以通过检查自定义错误对象的某些属性来轻松完成。您可以直接返回您想要的任何对象,并将其序列化为JSON。它甚至可以是使用
new{}
在客户端,您必须检查是否收到了常规响应或错误对象,这可以通过检查自定义错误对象的某些属性来轻松完成。您可以直接返回您想要的任何对象,并将其序列化为JSON。它甚至可以是使用
new{}
在客户端,您必须检查是否收到了常规响应或错误对象,这可以通过检查自定义错误对象的某些属性来轻松完成。您可以使用包含错误消息的对象返回
HttpResponseMessage
(在本例中为errors
)作为内容:
return new HttpResponseMessage(HttpStatusCode.BadRequest)
{
Content = new ObjectContent(typeof(ErrorClass), errors, new JsonMediaTypeFormatter())
};
可以找到有关如何返回操作结果的更多信息
显然,您可以通过创建一个方法并像示例中那样调用它来重用上述代码:modelhasrerrors(errors)
但是,如果您经常发现自己返回相同的响应,一个不错的选择是创建一个自定义异常筛选器,该筛选器将在
ModelState.IsValid
为false时返回相同的响应。您可以使用包含错误消息的对象返回HttpResponseMessage
(在本例中为错误
)作为内容:
return new HttpResponseMessage(HttpStatusCode.BadRequest)
{
Content = new ObjectContent(typeof(ErrorClass), errors, new JsonMediaTypeFormatter())
};
可以找到有关如何返回操作结果的更多信息
显然,您可以通过创建一个方法并像示例中那样调用它来重用上述代码:modelhasrerrors(errors)
但是,如果您经常发现自己返回相同的响应,一个不错的选择是创建一个自定义异常筛选器,该筛选器将在
ModelState.IsValid
为false时返回相同的响应。您可以使用包含错误消息的对象返回HttpResponseMessage
(在本例中为错误
)作为内容:
return new HttpResponseMessage(HttpStatusCode.BadRequest)
{
Content = new ObjectContent(typeof(ErrorClass), errors, new JsonMediaTypeFormatter())
};
可以找到有关如何返回操作结果的更多信息
显然,您可以通过创建一个方法并像示例中那样调用它来重用上述代码:modelhasrerrors(errors)
但是,如果您经常发现自己返回相同的响应,一个不错的选择是创建一个自定义异常筛选器,该筛选器将在
ModelState.IsValid
为false时返回相同的响应。您可以使用包含错误消息的对象返回HttpResponseMessage
(在本例中为错误
)作为内容:
return new HttpResponseMessage(HttpStatusCode.BadRequest)
{
Content = new ObjectContent(typeof(ErrorClass), errors, new JsonMediaTypeFormatter())
};
可以找到有关如何返回操作结果的更多信息
显然,您可以通过创建一个方法并像示例中那样调用它来重用上述代码:modelhasrerrors(errors)
但是,如果您经常发现自己返回相同的响应,一个不错的选择是创建一个自定义异常筛选器,每当ModelState.IsValid
为false时,该筛选器将返回相同的响应。最简单的方法是
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ModelState);
我习惯于使用表示错误响应的特殊对象。我可以添加我的特定(翻译)消息、状态代码等
public class ErrorModel
{
public ErrorModel(HttpStatusCode statusCode, string message)
{
StatusCode = (int)statusCode;
Message = message;
ValidationErrors = new Dictionary<string, ModelErrorCollection>();
}
public ErrorModel(HttpStatusCode statusCode)
{
StatusCode = (int)statusCode;
ValidationErrors = new Dictionary<string, ModelErrorCollection>();
}
public string Message { get; set; }
public int StatusCode { get; set; }
public Dictionary<string, ModelErrorCollection> ValidationErrors { get; set; }
public Exception Exception { get; set; }
}
最后,在我的控制器中,我只需调用:
return Request.CreateCustomResponse(HttpStatusCode.NotFound, ApiHttpResultMessages.NotFound);
你可以在我的CodePlex项目Web API设计中找到灵感:最简单的方法是
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ModelState);
我习惯于使用表示错误响应的特殊对象。我可以添加我的特定(翻译)消息、状态代码等
public class ErrorModel
{
public ErrorModel(HttpStatusCode statusCode, string message)
{
StatusCode = (int)statusCode;
Message = message;
ValidationErrors = new Dictionary<string, ModelErrorCollection>();
}
public ErrorModel(HttpStatusCode statusCode)
{
StatusCode = (int)statusCode;
ValidationErrors = new Dictionary<string, ModelErrorCollection>();
}
public string Message { get; set; }
public int StatusCode { get; set; }
public Dictionary<string, ModelErrorCollection> ValidationErrors { get; set; }
public Exception Exception { get; set; }
}
最后,在我的控制器中,我只需调用:
return Request.CreateCustomResponse(HttpStatusCode.NotFound, ApiHttpResultMessages.NotFound);
你可以在我的CodePlex项目Web API设计中找到灵感:最简单的方法是
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ModelState);
我习惯于使用表示错误响应的特殊对象。我可以添加我的特定(翻译)消息、状态代码等
public class ErrorModel
{
public ErrorModel(HttpStatusCode statusCode, string message)
{
StatusCode = (int)statusCode;
Message = message;
ValidationErrors = new Dictionary<string, ModelErrorCollection>();
}
public ErrorModel(HttpStatusCode statusCode)
{
StatusCode = (int)statusCode;
ValidationErrors = new Dictionary<string, ModelErrorCollection>();
}
public string Message { get; set; }
public int StatusCode { get; set; }
public Dictionary<string, ModelErrorCollection> ValidationErrors { get; set; }
public Exception Exception { get; set; }
}
最后,在我的控制器中,我只需调用:
return Request.CreateCustomResponse(HttpStatusCode.NotFound, ApiHttpResultMessages.NotFound);
你可以在我的CodePlex项目Web API设计中找到灵感:最简单的方法是
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ModelState);
我习惯于使用表示错误响应的特殊对象。我可以添加我的特定(翻译)消息、状态代码等
public class ErrorModel
{
public ErrorModel(HttpStatusCode statusCode, string message)
{
StatusCode = (int)statusCode;
Message = message;
ValidationErrors = new Dictionary<string, ModelErrorCollection>();
}
public ErrorModel(HttpStatusCode statusCode)
{
StatusCode = (int)statusCode;
ValidationErrors = new Dictionary<string, ModelErrorCollection>();
}
public string Message { get; set; }
public int StatusCode { get; set; }
public Dictionary<string, ModelErrorCollection> ValidationErrors { get; set; }
public Exception Exception { get; set; }
}
最后,在我的控制器中,我只需调用:
return Request.CreateCustomResponse(HttpStatusCode.NotFound, ApiHttpResultMessages.NotFound);
你可以在我的CodePlex项目Web API设计中找到灵感:你不显示什么是ModelErrorCollection?你不显示什么是ModelErrorCollection?你不显示什么是ModelErrorCollection?你不显示什么是ModelErrorCollection?