如图所示,如何在ASP.net webapi上创建响应格式?
错误响应:
成功响应:
发布于 2017-08-22 14:09:55
首先创建DTO
public class SuccessDTO
{
public int success { get; set; }
public string message { get; set; }
public List<RoleDTO> data{ get; set; }
}
public class RoleDTO
{
public string roles_name{ get; set; }
public string description { get; set; }
}
public class ErrorDTO
{
public int success { get; set; }
public ErrorCodeDTO error { get; set; }
}
public class ErrorCodeDTO
{
public int code { get; set; }
public string message { get; set; }
}
然后从web api返回对象。
public IHttpActionResult GetSuccess()
{
var success = new SuccessDTO
{
success = 1,
message = "Ok",
data = new List<RoleDTO>()
{
new RoleDTO
{
roles_name = "Admin",
description = "admin"
},
new RoleDTO
{
roles_name = "Administrator",
description = "Administrator"
}
}
};
return Ok(success);
}
public IHttpActionResult GetError()
{
var error = new ErrorDTO
{
success = 0,
error = new ErrorCodeDTO
{
code = 0,
message = "invalid username and password"
}
};
return BadRequest(error);
}
发布于 2017-08-22 12:58:41
这将以定义的格式返回数据。
//返回对象
public class ReturnThisOBJ
{
public string message { get; set; }
public string success { get; set; }
public List<yourClass> data{ get; set; }
}
public class yourClass
{
public string roles_name{ get; set; }
public string description { get; set; }
}
JSON Serialization And Deserialization
发布于 2017-08-22 20:32:44
好吧,我只是在System.Web.OData中跟踪了它在PageResult中是如何完成的,以便返回他们想要的任何结果。
好了,给你。您需要编写这些类才能从任何方法返回。
public class error
{
public int code { get; set; }
public string message { get; set; }
}
[DataContract]
public abstract class MyResult
{
private string _message;
private bool _success;
private error _error;
protected MyResult(bool success, string message)
{
this.success = success;
if (this.success == true)
{
message = "OK";
}
this.message = message;
if (this.success == false)
{
this.error = new error
{
code = 0,
message = this.message
};
}
}
protected MyResult(bool success, error error)
{
this.success = success;
if (this.success == true)
{
error = null;
this.message = "OK";
}
this.error = error;
if (this.success == false)
{
this.message = this.error.message;
}
}
[DataMember]
public bool success
{
get
{
return _success;
}
private set
{
_success = value;
}
}
[DataMember]
public string message
{
get
{
return _message;
}
set
{
_message = value;
}
}
[DataMember]
public error error
{
get
{
return _error;
}
set
{
_error = value;
}
}
}
[DataContract]
[JsonObject]
public class MyResult<T> : MyResult, IEnumerable<T>
{
public MyResult(IEnumerable<T> data, bool success = true, string message = "OK") : base(success, message)
{
this.data = data;
}
public MyResult(string errorMessage) : base(false, errorMessage) { }
public MyResult(error error) : base(false, error) { }
[DataMember]
public IEnumerable<T> data { get; private set; }
public IEnumerator<T> GetEnumerator()
{
return data.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return data.GetEnumerator();
}
}
MyResult是我们将从控制器返回的类。现在是数据类,你可以使用任何你想要的名字的类。
public class Data
{
public string role { get; set; }
public int? id { get; set; }
}
下面是我如何从我的控制器调用它
public class MyDataFormatController : ApiController
{
List<Data> data = new List<Data>();
public MyResult<Data> Get()
{
data.Add(new Data { id = 1, role = "admin" });
data.Add(new Data { id = 2, role = "manager" });
data.Add(new Data { id = 3, role = "employee" });
return new MyResult<Data>(data);
}
[Route("api/mydataformat/errormessage")]
public MyResult<Data> GetError()
{
return new MyResult<Data>("No Data");
}
[Route("api/mydataformat/errorwithcode")]
public MyResult<Data> GetErrorWithCode()
{
return new MyResult<Data>(new error { code = 101, message = "Invalid Data" });
}
}
https://stackoverflow.com/questions/45809076
复制相似问题