我正在使用ASP.NET Web API创建api
我在存储库中有一个方法,可以将工作人员添加到公司。 这是方法:
public void AddToCompanyBy(Guid workerId, Guid companyId)
{
var worker = GetById(workerId);
var company = DbContext.Set<Company>().Find(companyId);
if (worker == null)
throw new Exception("This worker does not exist");
if (company == null)
throw new Exception("This company does not exist");
company.Workers.Add(worker);
}
我有一个调用此方法的ApiController动作。 这是这个动作:
public IHttpActionResult AddToCompany(Guid workerId, Guid companyId)
{
try
{
UoW.Workers.AddToCompanyBy(workerId, companyId);
return Ok();
}
catch (Exception ex)
{
return BadRequest();
}
}
所以我的问题是: 我是否正确地将响应返回为好或者我必须选择其他类型的响应? 我还应该退回实体吗? 如何标记动作(PUT或PATCH或GET)?
答案 0 :(得分:1)
可以返回OK响应。由于Content Negotiation in Web API,您不应该指定返回类型。
这取决于您的API以及API的消费者希望获得的结果。如果仅仅知道一切都正确就足够了,你可以留下好消息。如果他们需要您的服务器生成的某些数据,对于例如增加的ID,您应该返回此数据甚至是完整实体。
如何标记动作(PUT或PATCH或GET)?
[HttpPost]
public IHttpActionResult AddToCompany(Guid workerId,Guid companyId)
[HTTPGET]
public IHttpActionResult AddToCompany(Guid workerId,Guid companyId)
根据评论更新:
PUT和POST都可用于创建。当然,您不应该使用GET动词进行创建或更新。
一般Http动词规范:w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3
发布此讨论:stackoverflow.com/questions/630453/put-vs-post-in-rest