问题标签 [http-status-code-422]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
9617 浏览

error-handling - 客户端错误请求的 400 与 422

我已经阅读了很多关于正确的 http 状态代码以返回客户端请求错误的帖子和文章。其他人建议使用 400,因为它已在RFC 7231中重新定义,但我不确定给出的示例是否涵盖了我脑海中的所有客户端错误,因为这些示例是句法的。

400 (Bad Request) 状态码表示服务器不能或不会处理请求,因为某些东西被认为是客户端错误(例如,格式错误的请求语法、无效的请求
消息帧或欺骗性请求路由)。

我确实在 rfc 7231 的附录 B 中找到了这个声明:

400(错误请求)状态代码已放宽,因此它
不限于语法错误。(第 6.5.1 节)

这是否意味着我可以将任何类型的客户端错误视为错误请求?将 400 用于客户端请求并在消息中指定更具体的错误会更好吗?


另一方面,其他人说最好使用 422 (Unprocessable Entity)。虽然这更侧重于语义,但它只列在 [RFC 4918][2] 中,它是 http/1.1 的 webDAV 扩展

422(Unprocessable Entity)状态码意味着服务器
理解请求实体的内容类型(因此
415(Unsupported Media Type)状态码是不合适的),并且
请求实体的语法是正确的(因此是 400(Bad Request) )
状态码不合适)但无法处理包含的指令。例如,如果 XML
请求正文包含格式正确(即语法正确)但
语义错误的 XML 指令,则可能会出现这种错误情况。

我可以使用这个 webDAV 扩展代码来处理我的 http 请求吗?在 422 的情况下,即使它不在核心 http 代码中,我也可以使用它吗?

对于客户端错误,我应该使用 400 还是 422?

这是我想到的可能的客户端错误:


任何信息丰富的回应将不胜感激。非常感谢,伙计们!

更新:我检查了 google api 错误,但它们没有使用 422。另一方面,Twitter 使用 422。我比以往任何时候都更加困惑。< 虽然我的一部分人认为 400 是更好的选择,因为它包含在内在 RFC 文档中,422 不是。不过我可能是错的。

0 投票
0 回答
2625 浏览

python - 422 Tika 服务器响应?蒂卡蟒蛇

我一直在尝试让 Apache-Tika 使用这个 python 包:https ://github.com/chrismatmann/tika-python

我的 python 程序中有以下代码:

但我每次都会收到 422 响应:

当我使用以下命令时,Apache Tika 确实有效:

我真的很想用 Tika-Python 包来修复这个错误,因为如果这可行的话,项目的其余部分会容易得多。

0 投票
0 回答
93 浏览

json - 内容类型 JSON 的 web.config 错误处理程序

这是我目前的情况(在 web.config 文件中):

我们的应用程序有一个错误 HTTP“422”(即 Content-Type JSON)。我们需要这个 JSON 才能使应用程序正常工作。

但是我们的 IIS 正在发送像 Content-Type →text/html 这样的响应,响应是:

自定义错误模块无法识别此错误。{"code":"XXX","message":"Message"}

我们尝试在 web.config 中添加, httpErrors tag: existingResponse="PassThrough"但错误 404 配置停止工作。我们需要两件事都可以工作(错误 404 配置和 422 错误的 Content-Type JSON 响应)。

无法修改我们的应用程序,这就是为什么我们需要使用 web.config 文件的解决方案。

0 投票
1 回答
983 浏览

ruby-on-rails - gem“rack-cors”不工作并且从角度客户端请求rails api抛出cors错误

我正在努力让 gem “rack-cors” 在本地工作。我使用 gem 'devise_token_auth' 和 angular 7 客户端设置了裸轨,使用 'angular-token' 进行身份验证。但是来自 Angular 的每个请求都会引发 cors 错误。我已经按照文档配置了 rails 和“rack-cors”,但它不起作用。这是我的配置application.rb

rails middleware如果我使用,列出中间件,Rack::Cors则在后面列出,use Webpacker::DevServerProxy但每个请求都会引发以下错误。

0 投票
1 回答
75 浏览

json - 从服务器获取 422 - 我是否错误地传递了 JSON 对象?

我正在开发一个将数据推送到在 localhost 上运行的 node.js 服务器的 React 项目。实际代码在这里:

服务器返回 422 并解释如下:{data: "'text' field must be present in json"。

我正在传递的对象的 Console.log:

服务器正在运行此测试:

我想我输入错误,但我看不到错误 - 特别是当我依赖 JSON.stringify 时。创建任务对象时我犯了错误吗?当我尝试 console.log(task.text); 它返回未定义 - 但我不知道为什么,因为我对 JSON 的经验很少。我相信我使用的格式符合标准。我将不胜感激任何输入!

编辑:JSON 对象如何附加到 URL?是通过“?” 作为参数?

0 投票
2 回答
2635 浏览

ruby-on-rails - GraphQL/ Rails 422 无法处理的实体 - 将令牌保存到会话

我目前正在将项目的 Rails 后端从 REST 更改为 graphql,并且在他们的教程之后我遇到了身份验证错误 - https://www.howtographql.com/graphql-ruby/4-authentication/

我正在使用 GraphiQL 引擎来测试我的所有请求和接收错误status 422 unprocessable Entity, User Must Exist

这是有道理的,因为我正在执行的突变是创建一种新颜色——它belongs_to与用户有关系。

大约在上面链接的页面的一半^^^它说:

使用signinUser突变提供的令牌,应用程序可以验证后续请求。有几种方法可以做到这一点。在本教程中,我们将只使用内置 session,因为这不会向客户端应用程序添加任何要求。GraphQL 服务器应该能够从每个请求的会话标头中获取令牌,检测与它相关的用户,并将此信息传递给解析器。

我能够通过signinUser之前在同一页面上显示的文档之类的方法成功返回身份验证令牌 - 它发布的方法也在此方法中将令牌保存到此假定会话(也来自上面发布的同一链接^ ^^) :

您将能够在我的拼命挣扎中看到,我在方法返回之前就退出了会话,并且毫不奇怪地看到它包含用户登录的令牌。

但是,当我继续执行突变以创建颜色时,我的期望是会话仍将包含该标记,并且我能够成功提交该颜色。情况并非如此,当我为这个请求退出会话时,它返回一个空哈希。

我找不到任何关于内置 graphql会话如何工作的信息——而且我对 graphql 来说是全新的。


我的主要问题是——graphql会话是否应该缓存令牌信息?为什么信息没有传递给以下请求signinUser?由于文档声称这种身份验证方法不是长期解决方案,我是否应该尝试在本教程中使用身份验证?


我知道这很多,但真的很感激在这方面有额外的大脑。

提前致谢!

PS。我了解本教程使用链接,并且我在这里使用颜色- 这是故意的,我已尽力确保语义差异不会导致任何错误。

  • Rails 版本 - 5.2.2(仅使用 api)

  • graphql - 1.7.4

  • graphiql 导轨 - 1.4.4

0 投票
4 回答
1953 浏览

javascript - 无法自定义表单错误,因为服务器返回 422 Unprocessable Entity 而没有返回错误

我正在使用 Laravel 和 VueJS,对于我的所有post方法,put服务器在提交表单后返回新创建的数据,如果出现错误,我无法从browser console. 这是我在newtwork tab.The 中可以看到的。目的是根据服务器返回的错误自定义表单错误

这是我的后端代码:

还有我的前端代码:

当没有错误时,一切都很好,但是当有错误时,这就是我得到的browser console tab

Devtools 控制台选项卡

而在Devtools network tab

Devtools 网络选项卡

我已经尝试了以下链接Issues with Axios catch method from Laracast

如何在 .catch 中显示来自前端 api 的错误

还有其他一些解决方案,但都没有解决我的问题。在使用之前async-await pattern我使用过axios.post('url',data).then(res=>...).catch(err=>...)

当我使用邮递员时,http status仍然是422error object被退回了,所以postman一切都很好但不在browser

邮递员测试

我怎么解决这个问题?

0 投票
0 回答
1689 浏览

laravel - 记录匹配时的 Laravel 422(不可处理实体)

我有一个 Laravel 后端和 Vue 前端。在我的登录组件中,我对我的登录 Web 路由进行了 axios 调用:

当我记录表单数据时,我看到以下内容:

将其发送到 是正确的格式,LoginController因为我在工作中以相同的方式使用它RegisterController / Register component。凭据也与数据库中的记录相匹配。但是,我收到此错误:

当我查看它为什么给我这个错误时,它说:

因此,我尝试通过执行以下操作覆盖特征中的默认方法来查看请求发送到控制器的内容AuthenticatesUsers

这也返回:

与数据库中的记录相同.. 如果凭据与数据库中的凭据相同,为什么 Laravel 仍然给我这个错误?注册组件确实使用默认的 RegisterController 创建了一个用户,并且我发送数据的方式与登录时的方式相同。有人可以向我解释为什么它一直这样说吗?

更新:

这是我的用户模型:

这里是我完整的 LoginController:

0 投票
2 回答
37554 浏览

file-upload - 向 Redmine API 发送 POST 请求时如何修复“422 Unprocessable Entity”?

我正在尝试使用 redmine rest api 创建一个 wiki 页面。身份验证成功,但由于 422 错误,未创建 wiki 页面。

Redmine 文档说:“当尝试创建或更新具有无效或缺少属性参数的对象时,您将收到 422 Unprocessable Entity 响应。这意味着无法创建或更新该对象。”

但我似乎可以找出我搞砸的地方。当我提出第二个请求 - “提出请求”时,问题就出现了。

所以我们知道问题出在那个部分的某个地方。

我的猜测是,它要么是文件路径,要么是内容类型。

这是我到目前为止所拥有的......

我想在我的 redmine 仪表板中看到一个 wiki 页面正在创建,但我收到 422 错误。

0 投票
0 回答
91 浏览

java - 如何使用 GET HTTP 方法修复 exchange() 方法以获得正确的 JSON 答案?

这是我第一个使用 Java、Spring Boot 和 Maven 的应用程序 Allegro Rest api。我正在尝试使用本指南https://developer.allegro.pl/auth/#clientCredentialsFlow进行授权 Client_credentials 流程并调用 REST API 资源。但是结果我有错误:422 Unprocessable Entity。我应该怎么办?

`

`