我正在使用ASP.Net Web API构建RESTful服务。我很难找到一种干净的方式将HATEAOS链接添加到返回给我的客户的json中。
例如我有
public class LongRequest
{
public int Id {get;set;}
public int Progress {get;set;}
}
public HttpResponseMessage Post(LongRequest request)
{
var response = Request.CreateResponse(HttpStatusCode.Accepted, request);
string uri = Url.Link("DefaultApi", new { Id = request.Id });
response.Headers.Location = new Uri(uri);
return response;
}
我希望我的返回json在json中包含一个看起来像
的取消和自我链接
{
"LongRequest":{
"Id":"32",
"Progress":"33",
"link":{
"rel":"self",
"href":"/LongRequest/32"
},
"link":{
"rel":"cancel",
"href":"/LongRequest/32"
},
}
}
” 我现在所做的就是创建一个链接类。
public class Link
{
public string method { get; set; }
public string href { get; set; }
}
并将LongRequest修改为
public class LongRequest
{
public int Id {get;set;}
public int Progress {get;set;}
public Link self
{
get{
return new Link(){href="/Status/"+Id,method="GET"};
}
}
public Link cancel
{
get{
return new Link() { href = "/Status/" + Id, method = "DELETE" };
}
}
}
这导致json看起来像
{
"Id":0,
"Progress":1,
"self":{"method":"GET","href":"/Status/0"},
"cancel":{"method":"DELETE","href":"/Status/0"}
}
答案 0 :(得分:0)
如果您想以标准化方式包含链接,请查看一些支持超媒体的格式: