首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用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错误。

1.6K20

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

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

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

RESETful API 设计规范

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

1.6K10

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

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

1.1K20

基于Karma构建微服务

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

97850

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

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

2.6K10

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状态返回代码要考虑一些指南。 正确错误处理可以帮助验证传入请求,并更好地识别潜在安全风险。

3.7K10

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

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

1.9K50

OAuth 2.0身份验证

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

3.2K10

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.1K20

处理 JavaScript 中非预期数据

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

1K30

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 详细信息,图表和过滤器揭示每个新问题趋势。

1.3K30

初识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.6K21

REDHAWK——连接(续)

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

8310

我们必须要知道RESTful服务最佳实践

客户端通常无法表明自己是直接还是间接与端服务器进行连接,分层同样要考虑安全策略。...4** 请求错误这些状态代码表示请求可能出错,妨碍了服务器处理。 5**(服务器错误)这些状态代码表示服务器在尝试处理请求发生内部错误。 这些错误可能是服务器本身错误,而不是请求出错。...验证数据错误(401、403、404、406、500) PUT 更新实体所有信息除ID外 201更新成功、422(401、403、404、406、500) 6....recently_login_day=3 搜索用户,并按照注册时间降序 https://example.com/api/users?...recently_login_day=3 搜索用户,并按照注册时间升序、活跃度降序 https://example.com/api/users?

1.2K30

Burp Collaborator

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

1.5K60

原生 JavaScript + NodeJS(Express 框架) 做一个简陋登录注册项目

, 通过 model.js 里导出 User 进行数据增、查操作, 定义了一些中间件来对输入用户名,密码和,验证码进行检验....).send(`${req.body.username} 用户名已存在`); console.log(e) } }); model.js 定义了 User 对象, server.js 中执行...User.create 操作, 密码就会被加盐, 然后哈希, 存入数据库. bcrypt 盐无需存储...., nodejs 产生一个 token 发送给客户端, 客户端保存在 localStorage 中, 请求某些特定 api 时候带上这个 token, 以便后端鉴权, 注销就删除这个 token....next():res.status(422).send("验证码不正确") }; 需要处理一下跨域问题, 因为生成验证码和验证验证码 api 不同, 这样 session 可以共享 app.all("

84020

RESTfulAPI接口设计规范与快速入门

Q: API 服务器设计规范和组合 我们要实现一个API 接口服务器,需要考虑两个方面一个是API设计风格,另外一个是返回数据类型。...HTTP方法 行为操作 API URL 操作说明 GET 获取资源列表 /users 获取用户账号列表 GET 获取一个具体资源 /users/admin 获取admin账号相关详细信息 POST...422 Unprocesable entity [POST/PUT/PATCH] 创建一个对象,发生一个验证错误。...500 INTERNAL SERVER ERROR [*] 服务器发生错误,用户无法判断发出请求是否成功。...上述功能代码在结构中有列出,新加功能代码放入对应功能目录/文件中,可以使整个项目代码结构更加清晰,非常 有利于后期查找和维护 。 # Linux mkdir -vp .

1.4K40
领券