如何为非资源实体设计RESTAPI
我正在开发一个非常简单的电子商务应用程序,其中UI/html通过一组RESTful API(具体来说是ASP.NET Web API)与服务器进行对话 正确遵循REST后,API将公开资源。这在处理我的域对象(如产品、用户等)时效果很好 但有些功能并不遵循这种模式。例如,当用户输入订单号时,我想检查这是否是有效的订单号。现在我可以做一个简单的getonordersapi并返回notfoundforinvalidateorder如何为非资源实体设计RESTAPI,rest,asp.net-web-api,restful-architecture,Rest,Asp.net Web Api,Restful Architecture,我正在开发一个非常简单的电子商务应用程序,其中UI/html通过一组RESTful API(具体来说是ASP.NET Web API)与服务器进行对话 正确遵循REST后,API将公开资源。这在处理我的域对象(如产品、用户等)时效果很好 但有些功能并不遵循这种模式。例如,当用户输入订单号时,我想检查这是否是有效的订单号。现在我可以做一个简单的getonordersapi并返回notfoundforinvalidateorder GET http://myhost.com/api/orders/S
GET http://myhost.com/api/orders/SomeOrderNumber -> http 404
但这是正确的方法吗?如果我想返回错误代码和消息怎么办?(显然不是订单对象的一部分)
那些甚至不属于我的领域的实体呢。e、 g.我想根据一些参数和条件验证邮政编码。我真的不想要这样的东西
GET http://myhost.com/api/postcodes/SomePostCode -> validation message
如果我想获得当前登录的用户数,应该公开哪种API?如果有人能给我指出任何以前的帖子或有用的文档,那将非常有帮助
204无内容
状态。您应该返回404 Not Found
,您可以在错误消息正文中解释该订单号无效的原因/api/users?最近一次看到\u自=2014-10-31 0:00:00
在响应中,您可以有一个元数据字段或标题,指示该查询的总大小。虽然这是一篇旧文章,但仍然希望发布我的评论,因为这可能会帮助其他人 我们在项目中所做的是,我们创建了EntityResultModel作为所有请求的返回类型
/// <summary>
/// Entity Result Model
/// </summary>
public class EntityResultModel
{
/// <summary>
/// Gets or sets a value indicating whether this instance is success.
/// </summary>
/// <value>
/// <c>true</c> if this instance is success; otherwise, <c>false</c>.
/// </value>
public bool IsSuccess { get; set; }
/// <summary>
/// Gets or sets the message.
/// </summary>
/// <value>
/// The message.
/// </value>
public string Message { get; set; }
/// <summary>
/// Gets or sets the result data.
/// </summary>
/// <value>
/// The result data.
/// </value>
public object ResultData { get; set; }
}
//
///实体结果模型
///
公共类EntityResultModel
{
///
///获取或设置一个值,该值指示此实例是否成功。
///
///
///如果此实例成功,则为true;否则为false。
///
公共bool issucess{get;set;}
///
///获取或设置消息。
///
///
///信息。
///
公共字符串消息{get;set;}
///
///获取或设置结果数据。
///
///
///结果数据。
///
公共对象结果数据{get;set;}
}
所有WebApi请求都将返回此EntityResultModel的对象,使用此对象,您可以验证请求是否成功,甚至可以填充消息,如果需要,还可以在数据属性中返回数据 谢谢你的回答,佩德罗。[1] 我的意思是404,但写空了!我的坏,现在已经编辑了。您能否给出一个在资源无效/未找到的情况下http响应的非常简短的示例?带有错误消息正文。[3] 这似乎是合理的。