.NET Platform 内置标准化对象
MediaTypeNames 类
官网地址,
https://learn.microsoft.com/zh-cn/dotnet/api/system.net.mime.mediatypenames?view=net-9.0
定义
- 命名空间:
System.Net.Mime
- 程序集:
System.Net.Mail.dll
指定电子邮件附件的媒体类型信息。
public static class MediaTypeNames
继承 Object —> MediaTypeNames
适用于
产品 | 版本 |
---|---|
.NET | Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 2.0, 2.1 |
说明
以下是 MediaTypeNames
类中各个字段、说明、值和描述的整理表格:
类别 | 字段名称 | 值 | 描述 |
---|---|---|---|
Application | FormUrlEncoded | application/x-www-form-urlencoded | URL 编码的键值对数据。 |
XmlDtd | application/xml-dtd | XML 文档类型定义格式的数据。 | |
Xml | application/xml | XML 格式的数据。 | |
Wasm | application/wasm | WASM(WebAssembly)格式的数据。 | |
Soap | application/soap+xml | SOAP 文档。 | |
Rtf | application/rtf | 富文本格式 (RTF) 的数据。 | |
ProblemXml | application/problem+xml | XML 问题详情格式的数据。 | |
XmlPatch | application/xml-patch+xml | XML 补丁格式的数据。 | |
ProblemJson | application/problem+json | JSON 问题详情格式的数据。 | |
Octet | application/octet-stream | 未解释的二进制数据。 | |
Manifest | application/manifest+json | Web 应用程序清单格式的数据。 | |
JsonSequence | application/json-seq | JSON 文本序列格式的数据。 | |
JsonPatch | application/json-patch+json | JSON 补丁格式的数据。 | |
Json | application/json | JSON 格式的数据。 | |
GZip | application/gzip | GZIP 压缩格式的数据。 | |
application/pdf | PDF(便携文档格式)的数据。 | ||
Zip | application/zip | ZIP 压缩格式的数据。 | |
Font | Collection | font/collection | 字体集合格式的字体数据。 |
Otf | font/otf | OpenType 布局 (OTF) 格式的字体数据。 | |
Sfnt | font/sfnt | SFNT 格式的字体数据。 | |
Ttf | font/ttf | TrueType 字体 (TTF) 格式的字体数据。 | |
Woff | font/woff | WOFF 格式的字体数据。 | |
Woff2 | font/woff2 | WOFF2 格式的字体数据。 | |
Image | Avif | image/avif | AVIF 图像格式的数据。 |
Bmp | image/bmp | BMP 图像格式的数据。 | |
Gif | image/gif | GIF(图形交换格式)图像数据。 | |
Icon | image/x-icon | ICO 图标格式的数据。 | |
Jpeg | image/jpeg | JPEG 图像格式的数据。 | |
Png | image/png | PNG 图像格式的数据。 | |
Svg | image/svg+xml | SVG(可缩放矢量图形)格式的数据。 | |
Tiff | image/tiff | TIFF(标签图像文件格式)的数据。 | |
Webp | image/webp | WebP 图像格式的数据。 | |
Multipart | ByteRanges | multipart/byteranges | 包含多个字节范围的数据。 |
FormData | multipart/form-data | 表单数据格式,通常用于上传文件。 | |
Mixed | multipart/mixed | 混合格式,用于包含多种不同类型的部分。 | |
Related | multipart/related | 相关格式,用于包含相互关联的内容部分。 | |
Text | Css | text/css | CSS 格式的文本数据。 |
Csv | text/csv | CSV(逗号分隔值)格式的文本数据。 | |
EventStream | text/event-stream | 事件流格式的文本数据,常用于服务器推送事件。 | |
Html | text/html | HTML 格式的文本数据。 | |
JavaScript | text/javascript | JavaScript 脚本格式的文本数据。 | |
Markdown | text/markdown | Markdown 格式的文本数据。 | |
Plain | text/plain | 纯文本格式的数据。 | |
RichText | text/richtext | 富文本格式 (RTF) 的文本数据。 | |
Rtf | text/rtf | RTF(富文本格式)的文本数据。 | |
Xml | text/xml | XML 格式的文本数据。 |
这个表格涵盖了 MediaTypeNames
中所有类别及其字段的信息,方便查阅和使用。
StatusCodes 类
官网地址,
https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.aspnetcore.http.statuscodes?view=aspnetcore-9.0
定义
- 命名空间:
Microsoft.AspNetCore.Http
- 程序集:
Microsoft.AspNetCore.Http.Abstractions.dll
Nuget
包:Microsoft.AspNetCore.App.Ref v9.0.2
HTTP
状态代码的常量集合。
public static class StatusCodes
继承 Object —> StatusCodes
注解
状态代码的说明可从 GetReasonPhrase 获取:
Microsoft.AspNetCore.WebUtilities.ReasonPhrases.GetReasonPhrase(Int32)
适用于
产品 | 版本 |
---|---|
ASP.NET Core | 1.0, 1.1, 2.0, 2.1, 2.2, 3.0, 3.1, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 |
字段说明
HttpStatusCode 枚举
官网地址,
https://learn.microsoft.com/zh-cn/dotnet/api/system.net.httpstatuscode?view=net-9.0
定义
- 命名空间:
System.Net
- 程序集:
System.Net.Primitives.dll
包含为 HTTP 1.1
的 RFC 2616
中定义的 HTTP
定义的状态代码值。
public enum HttpStatusCode
继承 Object —> ValueType —> Enum —> HttpStatusCode
适用于
产品 | 版本 |
---|---|
.NET | Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1 |
UWP | 10.0 |
字段说明
以下是 HttpStatusCode
枚举的完整 HTTP 状态码
表,包含名称、值和说明:
名称 | 值 | 说明 |
---|---|---|
Accepted | 202 | 等效于 HTTP 状态 202。指示已接受请求做进一步处理。 |
AlreadyReported | 208 | 等效于 HTTP 状态 208。指示已在多状态响应的前面部分枚举了 WebDAV 绑定的成员,并且不再将其包含在内。 |
Ambiguous | 300 | 等效于 HTTP 状态 300。指示请求的信息有多种表示形式。默认操作是将此状态视为重定向,并遵循与此响应关联的 Location 标头的内容。Ambiguous 是 MultipleChoices 的同义词。 |
BadGateway | 502 | 等效于 HTTP 状态 502。指示中间代理服务器从另一代理或原始服务器接收到错误响应。 |
BadRequest | 400 | 等效于 HTTP 状态 400。指示服务器未能识别请求。如果没有其他适用的错误,或者不知道准确的错误或错误没有自己的错误代码,则发送 BadRequest 。 |
Conflict | 409 | 等效于 HTTP 状态 409。指示由于服务器上的冲突而未能执行请求。 |
Continue | 100 | 等效于 HTTP 状态 100。指示客户端可能继续其请求。 |
Created | 201 | 等效于 HTTP 状态 201。指示请求导致在响应被发送前创建新资源。 |
EarlyHints | 103 | 等效于 HTTP 状态 103。向客户端指示服务器可能会发送最终响应,其中标头字段包含在信息性响应中。 |
ExpectationFailed | 417 | 等效于 HTTP 状态 417。指示服务器未能符合 Expect 标头中给定的预期值。 |
FailedDependency | 424 | 等效于 HTTP 状态 424。指示无法对资源执行该方法,因为请求的操作依赖于其他操作,并且该操作失败。 |
Forbidden | 403 | 等效于 HTTP 状态 403。指示服务器拒绝满足请求。 |
Found | 302 | 等效于 HTTP 状态 302。指示请求的信息位于 Location 标头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 标头。原始请求方法为 POST 时,重定向的请求将使用 GET 方法。Found 是 Redirect 的同义词。 |
GatewayTimeout | 504 | 等效于 HTTP 状态 504。指示中间代理服务器在等待来自另一个代理或原始服务器的响应时已超时。 |
Gone | 410 | 等效于 HTTP 状态 410。指示请求的资源不再可用。 |
HttpVersionNotSupported | 505 | 等效于 HTTP 状态 505。指示服务器不支持请求的 HTTP 版本。 |
IMUsed | 226 | 等效于 HTTP 状态 226。指示服务器已执行对资源的请求,并且响应表示应用于当前实例的一个或多个实例操作的结果。 |
InsufficientStorage | 507 | 等效于 HTTP 状态 507。指示服务器无法存储完成请求所需的表示形式。 |
InternalServerError | 500 | 等效于 HTTP 状态 500。指示服务器上发生了一般错误。 |
LengthRequired | 411 | 等效于 HTTP 状态 411。指示缺少必需的 Content-length 标头。 |
Locked | 423 | 等效于 HTTP 状态 423。指示源或目标资源已锁定。 |
LoopDetected | 508 | 等效于 HTTP 状态 508。指示服务器已终止操作,因为它在处理带有 “Depth: infinity” 的 WebDAV 请求时遇到了无限循环。 |
MethodNotAllowed | 405 | 等效于 HTTP 状态 405。指示请求的资源上不允许请求方法(POST 或 GET)。 |
MisdirectedRequest | 421 | 等效于 HTTP 状态 421。指示请求被定向到无法生成响应的服务器。 |
Moved | 301 | 等效于 HTTP 状态 301。指示请求的信息已移到 Location 头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 标头。Moved 是 MovedPermanently 的同义词。 |
MovedPermanently | 301 | 等效于 HTTP 状态 301。指示请求的信息已移到 Location 头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 标头。MovedPermanently 是 Moved 的同义词。 |
MultipleChoices | 300 | 等效于 HTTP 状态 300。指示请求的信息有多种表示形式。默认操作是将此状态视为重定向,并遵循与此响应关联的 Location 标头的内容。MultipleChoices 是 Ambiguous 的同义词。 |
MultiStatus | 207 | 等效于 HTTP 状态 207。指示 Web 分布式创作和版本管理 (WebDAV) 操作期间的单个响应有多个状态代码。响应正文包含描述状态代码的 XML。 |
NetworkAuthenticationRequired | 511 | 等效于 HTTP 状态 511。指示客户端需要进行身份验证才能获得网络访问权限;它旨在用于拦截用于控制网络访问权限的代理。 |
NoContent | 204 | 等效于 HTTP 状态 204。指示已成功处理请求并且响应已被设定为无内容。 |
NonAuthoritativeInformation | 203 | 等效于 HTTP 状态 203。指示返回的元信息来自缓存副本而不是源服务器,因此可能不正确。 |
NotAcceptable | 406 | 等效于 HTTP 状态 406。指示客户端已用 Accept 标头指示将不接受资源的任何可用表示形式。 |
NotExtended | 510 | 等效于 HTTP 状态 510。指示服务器需要进一步扩展请求才能使服务器完成该请求。 |
NotFound | 404 | 等效于 HTTP 状态 404。指示请求的资源不在服务器上。 |
NotImplemented | 501 | 等效于 HTTP 状态 501。指示服务器不支持请求的函数。 |
NotModified | 304 | 等效于 HTTP 状态 304。指示客户端的缓存副本是最新的。未传输此资源的内容。 |
OK | 200 | 等效于 HTTP 状态 200。指示请求成功,且请求的信息包含在响应中。这是最常接收的状态代码。 |
PartialContent | 206 | 等效于 HTTP 状态 206。指示响应是包括字节范围的 GET 请求所请求的部分响应。 |
PaymentRequired | 402 | 等效于 HTTP 状态 402。保留 PaymentRequired 以供将来使用。 |
PermanentRedirect | 308 | 等效于 HTTP 状态 308。指示请求信息位于 Location 标头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 标头。原始请求方法为 POST 时,重定向的请求还将使用 POST 方法。 |
PreconditionFailed | 412 | 等效于 HTTP 状态 412。指示此请求的条件集失败,并且无法执行该请求。使用条件请求标头设置添加,如:If-Match 、If-None-Match 或 If-Unmodified-Since 。 |
PreconditionRequired | 428 | 等效于 HTTP 状态 428。指示服务器要求的请求为条件请求。 |
Processing | 102 | 等效于 HTTP 状态 102。指示服务器已接受完成请求,但尚未完成该请求。 |
ProxyAuthenticationRequired | 407 | 等效于 HTTP 状态 407。指示请求的代理要求身份验证。Proxy-authenticate 标头包含如何执行身份验证的详细信息。 |
Redirect | 302 | 等效于 HTTP 状态 302。指示请求的信息位于 Location 标头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 标头。原始请求方法为 POST 时,重定向的请求将使用 GET 方法。Redirect 是 Found 的同义词。 |
RedirectKeepVerb | 307 | 等效于 HTTP 状态 307。指示请求信息位于 Location 标头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 标头。原始请求方法为 POST 时,重定向的请求还将使用 POST 方法。RedirectKeepVerb 是 TemporaryRedirect 的同义词。 |
RedirectMethod | 303 | 等效于 HTTP 状态 303。作为 POST 的结果,RedirectMethod 将客户端自动重定向到 Location 标头中指定的 URI。用 GET 生成对 Location 标头所指定的资源的请求。RedirectMethod 是 SeeOther 的同义词。 |
RequestedRangeNotSatisfiable | 416 | 等效于 HTTP 状态 416。指示无法返回从资源请求的数据范围,因为范围的开头在资源的开头之前,或因为范围的结尾在资源的结尾之后。 |
RequestEntityTooLarge | 413 | 等效于 HTTP 状态 413。指示请求太大,服务器无法处理。 |
RequestHeaderFieldsTooLarge | 431 | 等效于 HTTP 状态 431。指示服务器不愿意处理请求,因为它的标头字段(单个标头字段或所有标头字段合计)太大。 |
RequestTimeout | 408 | 等效于 HTTP 状态 408。指示客户端没有在服务器期望请求的时间内发送请求。 |
RequestUriTooLong | 414 | 等效于 HTTP 状态 414。指示 URI 太长。 |
ResetContent | 205 | 等效于 HTTP 状态 205。指示客户端应重置(而非重新加载)当前资源。 |
SeeOther | 303 | 等效于 HTTP 状态 303。作为 POST 的结果,SeeOther 将客户端自动重定向到 Location 标头中指定的 URI。用 GET 生成对 Location 标头所指定的资源的请求。SeeOther 是 RedirectMethod 的同义词。 |
ServiceUnavailable | 503 | 等效于 HTTP 状态 503。指示服务器暂时不可用,通常是由于过多加载或维护。 |
SwitchingProtocols | 101 | 等效于 HTTP 状态 101。指示正在更改协议版本或协议。 |
TemporaryRedirect | 307 | 等效于 HTTP 状态 307。指示请求信息位于 Location 标头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 标头。原始请求方法为 POST 时,重定向的请求还将使用 POST 方法。TemporaryRedirect 是 RedirectKeepVerb 的同义词。 |
TooManyRequests | 429 | 等效于 HTTP 状态 429。指示用户在给定时间内发送了太多请求。 |
Unauthorized | 401 | 等效于 HTTP 状态 401。指示请求的资源要求身份验证。WWW-Authenticate 标头包含如何执行身份验证的详细信息。 |
UnavailableForLegalReasons | 451 | 等效于 HTTP 状态 451。指示服务器由于法律要求而拒绝访问资源。 |
UnprocessableContent | 422 | 等效于 HTTP 状态 422。指示请求格式正确,但由于语义错误,无法遵循该请求。UnprocessableContent 是 UnprocessableEntity 的同义词。 |
UnprocessableEntity | 422 | 等效于 HTTP 状态 422。指示请求格式正确,但由于语义错误,无法遵循该请求。UnprocessableEntity 是 UnprocessableContent 的同义词。 |
UnsupportedMediaType | 415 | 等效于 HTTP 状态 415。指示请求是不受支持的类型。 |
Unused | 306 | 等效于 HTTP 状态 306。是未完全指定的 HTTP/1.1 规范的建议扩展。 |
UpgradeRequired | 426 | 等效于 HTTP 状态 426。指示客户端应切换为诸如 TLS/1.0 之类的其他协议。 |
UseProxy | 305 | 等效于 HTTP 状态 305。指示请求应使用位于 Location 标头中指定的 URI 的代理服务器。 |
VariantAlsoNegotiates | 506 | 等效于 HTTP 状态 506。指示所选的变体资源配置为参与透明内容协商本身,因此在协商过程中不是正确的终结点。 |
以上表格总结了所有 HTTP 状态码
及其含义,便于查阅和理解。
ProblemDetails 异常信息标准化类
官网地址,
https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.aspnetcore.mvc.problemdetails?view=aspnetcore-9.0
定义
- 命名空间:
Microsoft.AspNetCore.Mvc
- 程序集:
Microsoft.AspNetCore.Http.Abstractions.dll
Nuget
包:Microsoft.AspNetCore.App.Ref v9.0.2
一种计算机可读格式,用于指定基于 rfc7807 的 HTTP API 响应中的错误
。
- rfc7807 标准参考,
https://www.rfc-editor.org/rfc/rfc7807.html
public class ProblemDetails
继承 Object —> ProblemDetails
派生 Microsoft.AspNetCore.Http.HttpValidationProblemDetails
适用于
产品 | 版本 |
---|---|
ASP.NET Core | 2.1, 2.2, 3.0, 3.1, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 |
类说明
- 构造函数
函数名称 | 描述 |
---|---|
ProblemDetails() | 一种计算机可读格式,用于指定基于 https://tools.ietf.org/html/rfc7807 的 HTTP API 响应中的错误 。 |
- 属性
以下是 ProblemDetails
类的属性信息,整理为清晰的 Markdown
表格:
属性名 | 数据类型 | 说明 |
---|---|---|
Detail | string | 特定于此问题发生的人工可读说明。用于提供详细的错误描述。 |
Extensions | IDictionary<string, object> | 获取扩展成员的字典。问题类型定义可以使用其他成员扩展问题详细信息对象,这些扩展成员与问题类型的其他成员处于同一命名空间中。 |
Instance | string | 标识问题特定发生的 URI 引用。如果取消引用,它可能会生成进一步的信息,也可能不产生进一步的信息。 |
Status | int? | HTTP 状态代码(依据 [RFC7231] 第 6 节),表示源服务器为此问题生成的状态码。 |
Title | string | 问题类型的简短、可读摘要。该值不应因问题发生而改变,除非出于本地化目的(例如,使用主动内容协商;请参阅 [RFC7231] 第 3.4 节)。 |
Type | string | 标识问题类型的 URI 引用(依据 [RFC3986])。此规范鼓励在取消引用时,为问题类型提供用户可读的文档(例如,使用 HTML)。如果此成员不存在,则假定其值为 "about:blank" 。 |
说明
ProblemDetails
是一种标准的错误响应格式,常用于RESTful API
中,符合 RFC 7807 规范。- 它提供了一种结构化的方式来返回
HTTP
错误信息,并支持扩展字段,便于客户端处理不同的错误场景。 - 上表中的每个属性都可以用于构建标准化的错误响应,提高前后端协作效率。
JSON 示例
以下是基于 ProblemDetails
类的属性信息构建的标准 JSON
示例结构:
{
"type": "https://example.com/probs/validation-error",
"title": "Validation Failed",
"status": 400,
"detail": "One or more validation errors occurred.",
"instance": "/example/12345",
"extensions": {
"invalid_fields": [
{
"field": "username",
"message": "Username is required."
},
{
"field": "email",
"message": "Email must be a valid address."
}
]
}
}
温馨提示:
在asp.net core
项目中,可以使用该标准化异常对象包装全局异常处理信息,下一篇文章详解哟。