.NET Core Web API中StatusCodeResult与ObjectResult的用法理解是否正确?
关于.NET Core Web API中StatusCodeResult与ObjectResult的用法确认
你的理解完全正确,两者的核心区别就是是否携带响应数据:
- StatusCodeResult:仅返回HTTP状态码,响应体为空。它的子类比如
NotFoundResult、OkResult、BadRequestResult都属于这类,适合不需要给客户端返回额外信息的场景,比如请求的资源不存在且不需要说明原因时,用NotFoundResult就足够。 - ObjectResult:同时返回HTTP状态码和响应数据(可以是业务对象、错误提示信息等)。它的子类像
OkObjectResult、NotFoundObjectResult、BadRequestObjectResult都是用来在返回状态码的同时,把数据传递给客户端。比如你提到的场景:- 获取id=1的人员信息成功时,用
OkObjectResult把人员数据返回给客户端; - 若id不存在,要是需要告诉客户端“该ID对应的人员不存在”这类错误信息,就用
NotFoundObjectResult,如果不需要额外信息,直接用NotFoundResult即可。
- 获取id=1的人员信息成功时,用
补充个实用细节:控制器基类的Ok()、NotFound()等方法是重载的——不带参数时返回StatusCodeResult子类,带参数时返回ObjectResult子类,比如Ok(person)等价于new OkObjectResult(person),NotFound()等价于new NotFoundResult()。
内容的提问来源于stack exchange,提问作者TheAnonymousModeIT
相关产品推荐
相关产品推荐

