Asp.net web api 如何使用.NET web API处理状态代码?

Asp.net web api 如何使用.NET web API处理状态代码?,asp.net-web-api,Asp.net Web Api,我不熟悉.NETWebAPI。但我不知道返回状态代码时的最佳实践应该是什么。我已经跟随了教程,了解了它是如何工作的 我有一个规范,其中每个请求的响应都会返回一个状态码和其他数据,如果需要,我可以更改规范,但我无法确定返回状态码并同时返回所有请求的数据是否好,或者只返回自己的数据是否好 例如,如果我向GetAllCarManufacturers发出请求而未经身份验证,我将返回1(表示未经身份验证)的自定义statusCode,以及消息“用户未经身份验证”。。但是如果我被认证,我想发回0(表示成功)

我不熟悉.NETWebAPI。但我不知道返回状态代码时的最佳实践应该是什么。我已经跟随了教程,了解了它是如何工作的

我有一个规范,其中每个请求的响应都会返回一个状态码和其他数据,如果需要,我可以更改规范,但我无法确定返回状态码并同时返回所有请求的数据是否好,或者只返回自己的数据是否好

例如,如果我向
GetAllCarManufacturers
发出请求而未经身份验证,我将返回
1
(表示未经身份验证)的自定义
statusCode
,以及
消息
“用户未经身份验证”。
。但是如果我被认证,我想发回
0
(表示成功)和所有汽车制造商的
statusCode
。这似乎与本教程的组织方式背道而驰,因为只有汽车制造商在没有任何额外数据的情况下返回。这让我相信传递状态码不是正确的做法

我在示例crud演示中看到,抛出了HttpResponseException,将HttpStatusCode设置为某个值(参见下面的代码)。我应该使用它而不是返回我自己的状态码吗?但我担心的是,它没有足够的不同状态代码来匹配我的自定义场景

// Setting the HTTPStatusCode example.
throw new HttpResponseException(HttpStatusCode.NotFound);

.NET Web API为支持REST接口的服务器的HTTP调用设置了一个约定。因此,如果遵循约定,则应返回HTTP状态代码,以指示服务器处理请求时请求发生了什么

HTTP状态代码是HTTP规范的一部分,可以使用

使用HTTP状态码有很多好处。一个是HTTP状态代码是一个头,因此客户端不必查看响应的内容来找出发生了什么


因此,如果HTTP客户机希望从您的接口获得RESTful体验,那么返回自定义状态代码(比如0或1)对他们来说不是很有用

回答得好。唯一有争议的是,返回HTTP状态码的过程与REST无关。这只是正确使用HTTP的一个要求。Web API对您是否创建RESTful系统没有任何意见。REST不只是正确使用HTTP吗?:):-)我不知道你是不是在骗我,但让我们说不休息吧=HTTP.Ha:)不,不是trolling…在阅读了Fielding的论文之后,REST似乎只是在通过HTTP使用超媒体构建客户机/服务器应用程序。既然是这样,使用正确的HTTP代码似乎是REST故事的一部分。还是我想的不对?使用HTTP代码是HTTP故事的一部分是的。但这种关系并没有走向相反的方向。您可以在不遵守REST约束的情况下执行有效的HTTP。WebAPI是专门设计用来对HTTP固执己见的,但并不关心您是否遵循REST约束。这就是为什么Web API中很少支持超媒体的原因之一。Web API不会阻止您使用REST,但它也不鼓励您使用REST。如果您计划使用HTTP,请不要发明自己的状态代码。您必须使用HTTP定义的。如果你想提供额外的细节,那么看看下面的例子