C# RESTful设计是否更喜欢[FromBody]标记?
RESTful设计更喜欢URL中的数据还是[FromBody]中的数据? 假设我有一个控制器方法:C# RESTful设计是否更喜欢[FromBody]标记?,c#,.net,asp.net-mvc,visual-studio,rest,C#,.net,Asp.net Mvc,Visual Studio,Rest,RESTful设计更喜欢URL中的数据还是[FromBody]中的数据? 假设我有一个控制器方法: [Route("ServiceActivity({serviceActivityGuid:guid})/State({serviceAppointmentState:int})/Status({statusCode:int})", Name = "ServiceActivityStateStatusPut")] [HttpPut] [NotNull] public ServiceAppointme
[Route("ServiceActivity({serviceActivityGuid:guid})/State({serviceAppointmentState:int})/Status({statusCode:int})", Name = "ServiceActivityStateStatusPut")]
[HttpPut]
[NotNull]
public ServiceAppointment ServiceActivityStateStatusPut(int serviceAppointmentState, int statusCode, Guid serviceActivityGuid)
{
return this.serviceActivityService.UpdateShowTimeAs(serviceAppointmentState, statusCode, serviceActivityGuid);
}
这样做会更好吗
[Route("ServiceActivity({serviceActivityGuid:guid})", Name = "ServiceActivityStateStatusPut")]
[HttpPut]
[NotNull]
public ServiceAppointment ServiceActivityStateStatusPut([FromBody] myObject)
{
return this.serviceActivityService.UpdateShowTimeAs(myObject);
}
此操作的行为应该是当客户端导航到:
../ServiceActivity({serviceActivityGuid:guid})/State({serviceAppointmentState:int})/Status({statusCode:int})
具体而言:
../ServiceActivity(BF6ACF8D-8967-4D2B-BF53-E112D15A609B)/状态(1)/状态(0)
然后,对于主键为BF6ACF8D-8967-4D2B-BF53-E112D15A609B的记录,应将状态设置为1,将状态设置为0。
RESTful设计更喜欢URL中的数据还是[FromBody]?都是关于资源的。其背后的思想是,您的访问点应该与特定的资源相关联
在开始之前,我知道REST和HTTP不需要一起工作,所以RESTsul服务不需要使用HTTP,HTTP也不需要是RESTful的
在您的示例中,我想说,我个人更喜欢[FromBody]
,因为您可以重新设计URL方案,使其更加RESTful。REST本身并不喜欢[FromBody]
,因为这是ASP.NET
例如,上面示例中的资源似乎是一个ServiceActivity
,因此为PUT
方法使用类似/ServiceActivity/{serviceActivityGuid:guid}
的URL可能更有意义。实际的例行程序看起来像你的第二个
如果您的第一个示例是一个GET
,那么我会说它更接近REST所喜欢的,但是因为它是一个PUT
,我认为它没有多大意义。我将第一个示例解释为,我们将更新服务活动状态的状态。所以,虽然你的第一个答案本身并不一定是“错误的”,但它让我错误地理解了什么资源实际上受到了影响
顺便说一句,我还要看看你的URL格式。在我看来,使用资源({id})
格式似乎不符合REST与HTTP的常规做法。我将研究类似于/Resource/{id}/Subresource/{id}
等的格式
如果您有一个要求您查询状态和状态的GET
,我将执行类似/ServiceActivity?state=1&status=0的操作来返回状态为1和状态为0的所有活动
可以找到一些关于REST的好资源,并且
希望这有帮助:)
在REST和HTTP上编辑另一个不完全符合您的要求,但似乎是一个很好的资源