首页
学习
活动
专区
圈层
工具
发布

使用ASP.NET Core 3.x 构建 RESTful API - 3.3 状态码、错误故障、ProblemDetails

4xx,客户端错误: 400 - Bad Request,表示API消费者发送到服务器的请求是有错误的; 401 - Unauthorized,表示没有提供授权信息或者提供的授权信息不正确...; 403 - Forbidden,表示身份认证已经成功,但是已认证的用户却无法访问请求的资源; 404 - Not Found,表示请求的资源不存在; 405 - Method...not allowed,当尝试发送请求到资源的时候,使用了不被支持的HTTP方法时,就会返回405状态码; 406 - Not acceptable,这表示API消费者请求的表述格式并不被Web...它说明服务器已经懂得了实体的Content Type,也就是说415状态码肯定不合适;此外,实体的语法也没有问题,所以400也不合适。但是服务器仍然无法处理这个实体数据,这时就可以返回422。...错误并不会影响API的可用性。 故障 Faults 故障是指,针对一个合理的请求,API无法返回它的响应。 换句话说就是API引起的问题。 这些是HTTP 5xx错误。

2K20

【Http】一文备忘Http状态码(406,415,422)

最近在调试接口时,web api 报了一个415状态码。好久没见到这个状态码,一时还真不知道啥情况。所以,人的大脑是有遗忘规律的,为了加深印象,所以我觉得我有必要再复习一下。...它就是用来处理并发问题的状态码。...它说明服务器已经懂得了实体的Content Type,也就是说415状态码肯定不合适;此外,实体的语法也没有问题,所以400也不合适。但是服务器仍然无法处理这个实体数据,这时就可以返回422。...当请求包含*accept头,在ASP.NET Core*框架中,将会: 按*accept*头中的顺序枚举媒体类型 尝试找到一个能生成*accept*中指定的格式之一的格式化器 找到了,就还罢了,一旦找不到格式化器...服务器已经懂得了实体的Content Type的媒体类型,也就是说415状态码肯定不合适; 此外,实体的语法也没有问题,所以400也不合适。 但是服务器仍然无法处理这个实体数据,这时就可以返回422。

3.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    HTTP Request 422 Unprocessable Entity

    HTTP 422 Unprocessable Entity 是一种 HTTP 状态码,表示服务器理解了请求的内容(通常是请求体),但由于某些语义错误,它无法处理该请求。...提交的数据格式正确,但某些业务规则被违反。例如,尝试创建重复的唯一标识符(如用户名或电子邮件)或提交的数据无法与其他数据项兼容。2. ...示例假设你有一个用户注册的 API,接受的请求数据应该包括 email、username 和 password。当用户提交的数据无效时,可能会返回 422 Unprocessable Entity。...如何处理 HTTP 422 错误4.1 客户端处理客户端应该根据服务器返回的错误信息进行处理。例如,如果某个字段的格式不正确,客户端应向用户显示相应的提示,要求其提供正确格式的数据。...调试 API:如果你是开发者,建议在服务器端增加详细的日志记录,以便在处理失败时能够快速定位问题。

    1.6K10

    RESETful API 设计规范

    如果你的应用很庞大或者你预计它将会变的很庞大,那 应该 将 API 放到子域下(api.example.com)。...405 Method Not Allowed 所请求的 HTTP 方法不允许当前认证用户访问 409 Gonfilct 该状态码表示因为请求存在冲突无法处理。...如通过手机号码提供注册功能的 API,当用户提交的手机号已存在时,必须 返回此状态码。 410 Gone 表示当前请求的资源已永久不存在。...当调用老版本 API 的时候很有用 413 Request Entity Too Large 该状态码表示服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。...如果这个状况是临时的,服务器 应该 返回一个 Retry-After 的响应头,以告知客户端可以在多少时间以后重新尝试。

    2.2K10

    【RESTful】RESTful API 接口设计规范 | 示例

    状态码:当客户端发送一个请求时,服务端应当响应什么状态码 错误处理:如当发现客户端传入的参数有问题时,该返回什么样的状态信息。...422 Unprocesable Entity 当创建一个对象时,发生一个验证错误。...例如创建用户资源时需要用户名、密码,而前端只提供用户名字段,那么就要返回一个422 状态码,并返回错误信息:”密码不能为空“ 500 INTERNAL SERVER ERROR 服务器内部错误,此时服务端无法处理任何请求...,403… 错误处理:输出JSON格式错误信息 返回结果:输出JSON数组或JSON对象 数据库设计 在数据库中新建2张表: 用户表: ID、用户名、密码、注册时间 文章表: 文章ID、标题、内容、发表时间...当然,处理RESTful API设计思想,还有最近流行的GraphQL,它是一种API查询语言,其将所见即所得的思想引入,能帮助提升开发的体验与应用的性能。

    3.4K20

    web框架在什么程度上受限 ?

    框架不是限制因素,它基本上是一种工具,可以简化应用程序某些部分的开发。例如,Django 和 rails 抽象了一些数据库功能,因此只需要担心模型对象。但这并不意味着自己也无法做任何事情。...答案4:通常,越完整、越有用的 web 框架,在尝试以与 web 框架认为的正确方式不同的方式做事时,其限制就越大。有些 web 框架试图提供极大的帮助且不受限制,有些则做得更好。...认为真的只需要一个极简主义的框架来处理一些基本内容。一个可以提供一些有关请求/响应处理和路由方面的细微差别并顺利进行的框架。类似于 Sinatra 的 Python 等价物可能是更适合的选择。...答案7:多年来一直使用 Ruby/Rails,并且与使用过的几乎所有其他语言/框架(跨越近 15 年的 Java、PHP、ColdFusion、ASP 等)不同,当需要时,它不会碍事。...Rails 3 使一切都可配置… 事实上,Rails 现在将只是一组特定的插件和扩展,位于无限灵活的核心之上。

    1.7K10

    基于Karma构建微服务

    我们为什么选择微服务 当开始构建Karma时,我们决定将项目分成两个部分:后端API和前端应用程序。后端负责处理来自商店的订单,账目,用户管理,设备管理等等,而前端为访问此API的用户提供接口。...这听起来很简单,但是当它是一个应用程序时,与用户相关的代码很容易出现在商店和设备API中,很快商店API就由于设备API的快速更新而落后了(比如分配设备给用户)。...我们可以将整体功能分割成库,然后将它们合并为一个API,但是我们发现了这种方法的三个主要问题: 缩放问题。当你想扩展时,你必须一次扩展整个API。...例如,Karma中,我们需要设备和用户API比商店API快得多。 版本。通过库方法,单一依赖能允许整个应用程序其余部分不升级。例如,从Rails 3升级到Rails 4是一件困难的事情。...该store现在由三个API组成:第一个API处理订单,第二个将订单发送到处理中心,第三个由FedEx发送包裹。我们的下一步是将订单处理分割。

    1.3K50

    DevOps工具介绍连载(20)——Google App Engine

    当然,您无法调用违反了 Sandbox 限制的库方法,例如尝试打开套接字或向文件写入。方便起见,其主要功能不受该运行时环境支持的标准库中的多个模块已被禁用,而导入这些模块的代码将发生错误。...您的应用程序可以根据需要向数据提供或多或少的结构。 数据库使用乐观锁定进行并发控制。如果有其他进程尝试更新某实体,而同时该实体位于以固定次数进行重新尝试的事务中,此时该实体将更新。...同一组的实体存储在一起,以高效执行事务。应用程序可以在实体创建时将实体分配到组。 有关数据库的详细信息,请参阅数据库 API 参考。...例如,当调用某应用程序以为网络请求提供服务时,该应用程序必须在几秒钟内发出响应。如果该应用程序花费的时间过长,则进程将被终止并且服务器将向用户返回错误代码。...在使用Google App Engine应用时,部分移动或者联通的手机无法接受到验证码短信(SMS),又无法更换手机申请,那么我们怎么处理呢?

    3.9K10

    5个REST API安全准则

    当开发REST API时,从一开始就必须注意安全方面。 REST是通过URL路径元素表达系统中特定实体的手段。REST不是一个架构,而是一种在Web上构建服务的架构风格。...例如,GET请求可能是对应读取实体,而PUT将更新现有实体,POST将创建一个新实体,DELETE将删除现有实体。 只允许需要的动词,其他动词将返回适当的响应代码 ( 例如,禁止一个403)。...(2)验证传入的内容类型 当POSTing或PUTting新数据时,,客户端将需要指定传入数据的Content-Type(例如application / xml或application / json)。...(2)存储中的数据 在正确处理存储敏感或管制数据时,建议实现最佳实践。 有关详细信息,请参阅OWASP 2010年前10 - A7不安全加密存储。...当设计REST API时,不要只使用200成功或404错误。 以下是每个REST API状态返回代码要考虑的一些指南。 正确的错误处理可以帮助验证传入的请求,并更好地识别潜在的安全风险。

    5.1K10

    使用Lagom和Java构建反应式微服务系统

    当您使用call,namedCall或pathCall时,Lagom将尽力尝试以语义方式将其映射到REST,这意味着如果有请求消息,它将使用POST,如果没有,它将使用GET。...这里的优点在于,当使用诸如认证的其他交叉切割问题来组合call时,可以使用普通的基于功能的组合来轻松完成。 提供服务的实现后,我们现在可以使用Lagom框架进行注册。...Lagom支持持久性的阅读侧处理器和消息代理主题订阅者。要在实体启动时重新创建当前状态,将重放事件。...每个实体只在一个地方运行,并且消息可以被发送到实体,而不要求发送者知道实体的位置。一个实体保持活着,只要它被使用就将其当前的状态保存在内存中。当一段时间没有使用时,它将自动被钝化以释放资源。...用于更新状态的功能使用BehaviorBuilder的setEventHandler方法进行注册。您应该为实体可以持续的每个事件类定义一个事件处理程序。在持续新事件和重播事件时都使用事件处理程序。

    2.5K50

    处理 JavaScript 中的非预期数据

    大多数这些非预期数据的起源都是人为失误,当语言解析到 null 或 undefined 时,与之配套的逻辑却没准备好处理它们。 II....重要: 注意我们返回了一个 HTTP 422 Unprocessable Entity 状态码,意味着“无法处理的实体”。...422 一样,对于分页查询,重要的是返回恰当的状态码,无论何时对于一个只在返回值中包含了部分数据的请求,都应该返回 HTTP 206 Partial Content,也就是 “不完整的内容”;当用户到达最后一页且再没有更多数据时...,才返回 200;如果用户尝试查询超出了总范围的页数,则返回一个 204 No Content。...外部 API 和数据库记录 这也是相当常见的情况,特别是当系统是在先前创建和填充的数据库之上开发的时候。例如,一个沿用之前成功产品数据库的新产品、在不同系统间整合用户等等。

    1.5K30

    OAuth 2.0身份验证

    从代码/令牌交换开始发生的所有通信都通过一个安全的、预配置的后台通道发送到服务器,因此终端用户看不到,当客户机应用程序首次向OAuth服务注册时,就会建立此安全通道,此时,还会生成一个client_secret...,通常在查询字符串中提供: client_id:包含客户端应用程序唯一标识符的强制参数,当客户机应用程序向OAuth服务注册时,会生成此值 redirect_uri:将授权代码发送到客户端应用程序时,应重定向用户浏览器的...未验证的用户注册 C、通过代理页窃取代码和访问令牌 对于更健壮的目标,您可能会发现,无论您尝试什么,都无法成功地将外部域作为redirect_uri提交,然而这并不意味着是时候放弃了。...未验证的用户注册 当通过OAuth对用户进行身份验证时,客户机应用程序会隐式地假设OAuth提供者存储的信息是正确的,这可能是一个危险的假设。...一些提供OAuth服务的网站允许用户注册帐户,而不必验证他们的所有详细信息,在某些情况下还包括他们的电子邮件地址,攻击者可以通过使用与目标用户相同的详细信息(例如已知的电子邮件地址)向OAuth提供程序注册帐户来利用此漏洞

    4.8K10

    《从失控到有序:Nest.js API错误治理全攻略》

    这不仅中断了用户的操作流程,还可能让他们对产品的可靠性产生质疑。而精心设计的错误处理机制,则能像一位贴心的向导,在错误发生时,准确地告知用户问题所在,并提供可能的解决方案,将负面影响降至最低。...例如,当查询数据库未找到指定记录时,抛出NotFoundException,API便会向客户端返回清晰的“资源未找到”错误信息和404状态码,使客户端能够快速理解问题的本质。...这个过滤器不仅能返回专门的错误信息,如“商品库存不足,无法完成购买”,还可以附带更多详细信息,如当前库存数量、用户尝试购买的数量等,帮助前端开发者和用户更好地理解问题,并做出相应的决策。...在捕获异常时,将异常的详细信息,包括错误堆栈、请求参数等记录下来,为后续的问题排查和系统优化提供有力支持。...通过与外部的错误监控服务(如Sentry)集成,将捕获到的异常信息实时发送到监控平台,开发者可以及时了解API的运行状况,快速发现并解决潜在的问题,保障API的稳定运行。

    19400

    Django RESTful API设计指南

    ) GET /zoos/id/ 获取某个指定动物园的信息(详细信息) POST /zoos 新建一个动物园 PUT /zoos/id/ 更新某个指定动物园的信息 DELETE /zoos/id/ 删除某个指定动物园...200 Ok [GET] 请求已成功,请求所希望的响应头或数据体将随此响应返回。 201 Created [POST/PUT/PATCH] 用户新建或修改数据成功。...401 Unauthorized [*] 表示用户没有权限(令牌、用户名、密码错误),未登录时,访问需要登录的页面。...422 Unprocesable entity [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。...500 Internal Server Error [*] 服务器发生错误,用户将无法判断发出的请求是否成功 502 Server Error [*] 后端服务挂掉或者服务器压力过大,nginx接到的请求无法及时传递给后端的服务处理

    1.4K20

    初识Consul

    这个信息可由operator用来监视集群的健康。服务发现组件用来避免将流量发送到不健康的主机。...多数据中心 Consul支持开箱即用的多数据中心.这意味着用户不需要担心需要建立额外的抽象层让业务扩展到多个区域。 Consul面向DevOps和应用开发者友好,使他适合现代弹性的基础设施。...服务注册 Consul会加载配置目录中的所有配置文件,配置文件是以.json结尾,并且以字典顺序加载。...对于我们上面注册的Web服务.它的域名是 web.service.consul : $ dig @127.0.0.1 -p 8600 rails.web.service.consul ; > DiG...API可对节点、服务、健康检查、配置等执行CRUD操作(CRUD是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete))。

    1.9K21

    Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT SDK 配置详解

    dsn DSN 告诉 SDK 将事件发送到哪里。如果没有提供这个值,SDK 将尝试从 SENTRY_DSN 环境变量中读取它。如果这个变量也不存在,SDK 就不会发送任何事件。...在没有进程环境(如浏览器)的运行时中,fallback 不会应用。 debug 打开或关闭调试模式。如果启用了调试,如果发送事件时出现问题,SDK 将尝试打印出有用的调试信息。默认值总是 false。...autoSessionTracking 当设置为 true 时,SDK 将发送 session 事件给 Sentry。...但是,如果您不这样做,Sentry 会在第一次看到具有该 release ID 的事件时自动在系统中创建一个 release 实体。...Release health 将提供与用户体验相关的崩溃和错误影响的见解,并通过 release 详细信息,图表和过滤器揭示每个新问题的趋势。

    2K30

    REDHAWK——连接(续)

    创建消息消费者后,您必须注册您的代码以从端口接收消息。以下程序解释了如何创建消息消费者并注册代码以处理消息。...++中注册代码以处理传入消息。...这些条件中的每一个都可能为使用端口进行通信的人创建问题;例如,如果发送了一个控制请求并且没有连接,那么用户应该被告知请求没有发送到任何地方。 同时,并非所有方法都是相同的。...当调用端口方法并且端口无法进行调用或调用无法明确时(例如,如果存在两个连接并且函数包含返回值),则在用户代码中引发 PortCallError。下表描述了满足的方法签名标准及其对应的行为。...此外,如果尝试调用时实际上没有连接,就会引发一个错误。 ②、连接选择 虽然当所需的连接不明确时,生成的端口类会触发一个错误,但它也包含一个 API,允许开发者选择应该使用哪个连接。

    55310

    Burp Collaborator

    当可以诱导应用程序从外部系统检索内容并以某种方式对其进行处理时,就会出现一些漏洞。例如,应用程序可能会检索所提供 URL 的内容并将其包含在其自己的响应中。...稍后,Burp Suite 轮询 Collaborator 服务器,接收交互的详细信息,并报告存储的 XSS漏洞: 协作者数据的安全性 用户可能对 Collaborator 服务器处理的数据的安全性有合理的担忧...在大多数情况下,当发现漏洞时,协作服务器将不会收到足够的信息来识别漏洞。它没有看到从 Burp 发送到目标应用程序的 HTTP 请求。...当 Collaborator 服务器收到轮询请求时,它会执行提交的密钥的单向散列,并检索包含从该散列派生的标识符的任何记录交互的详细信息。...这意味着,如果您使用公共 Collaborator 服务器上的电子邮件地址在网站上注册,并且该网站将攻击者控制的数据放入发送给您的电子邮件中,则攻击者可能能够通过他们自己的客户端检索该电子邮件。

    2K60
    领券