考虑以下两个 POST 场景:
POST /localhost/api/
- 插入一个实体,返回 200POST /localhost/api/1324
- 错误请求,返回 400
处理场景 2 的最佳方法是什么?
我是否什么都不做并假设使用我的 API 的开发人员会理解这是错误的?我是否在我的 POST 方法中添加代码来处理这个问题并告诉他们这是一个错误的请求?
我意识到返回一个错误的请求可能是最好的做法,这就是我最终实现的,但我觉得可能有更好的方法来实现这一点,但我还没有发现。
我当前的代码如下:
[HttpPost]
public HttpResponseMessage Post(MyEntity entity) {
if(entity.Id != null)
throw new HttpResponseException(HttpStatusCode.BadRequest);
MyEntity saved = repository.Insert(entity);
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, saved);
response.Headers.Location = new Uri(Request.RequestUri, new Uri(saved.Id.ToString(), UriKind.Relative));
return response;
}
// Prevents any attempt to POST with a Guid in the url
[HttpPost]
public void Post(Guid Id) {
throw new HttpResponseException(HttpStatusCode.BadRequest);
}
谢谢!