我正在运行一个带有服务器端网络服务的 SPA。
这是我的行为:
public async Task<IActionResult> Post([FromBody]CreateSchoolclassCodeRequestDto dto)
{
await service.CreateSchoolclassCodeAsync(dto);
return result;
}
符合标准的结果数据会是什么样子?
- 只是创建资源的
Id
? CreateSchoolClassCodeAsync
创建的整个实体?- 具有实体属性的新 Response 对象?
什么 IActionResult
符合标准?
CreatedAtRouteResult
?OkObjectResult
?ObjectResult
?
请附上解释答案的规范。
最佳答案
How will your result data look like?
Section 10 of RFC2616 states成功的 POST 响应将包括“描述或包含操作结果的实体”。在您的情况下,响应可以包含服务器在接收 POST 时创建的实际结果。
And what concrete
IActionResult
would you use?
ASP.NET Core MVC 提供了五个可行的替代方案。您的示例没有说明选择哪个;所以这里有一些指南。
Section 9 of RFC2626指定对成功 POST 的三个规范响应,并声明我们应该选择最详细的可用响应。以下是从最详细到最不详细的三个及其 ASP.NET Core MVC 实现。
201(已创建)响应。如果您可以使用 URI 标识结果并且可以包含描述结果的实体,请使用此响应。 ASP.NET Core MVC 提供了三个等效的实现:
-
CreatedResult
根据字符串设置 URI, -
CreatedAtActionResult
根据操作设置 URI,以及 -
CreatedAtRouteResult
根据路由设置 URI。
200 (OK) Response。如果您无法使用 URI 识别结果但可以包含一个实体来描述结果,请使用此选项。 ASP.NET Core MVC 提供了 OkObjectResult
.
204(无内容)响应。如果您无法使用 URI 识别结果并且无法包含描述结果的实体,请使用此选项。 ASP.NET Core MVC 提供了 NoContentResult
.
关于web-services - API POST 响应的符合标准的内容和格式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39966801/