Vuejs Axios Post请求获取HTTP422 Laravel Backend的错误



嗨,我在前端中使用vuejs,而后端则使用laravel。Laravel的作用仅是处理API。前端和后端是分开的,即我不使用Laravel的resource/js文件夹中的VUEJ。

现在,我将Vuejs的Axios发布请求发送到Laravel。使用HTML5 required属性将所有表单输入值均进行。当我 console.log请求数据时,它显示了填充的所有字段。

在VUE文件中:

const data = {
   name: this.name,
   gender: this.gender,
   mobile_no: this.mobile_no,
   image: this.userImage
};
console.log("Request data . . . .", data);
const response = await this.axios
   .post(`${this.AppURL}/admin/user/create`, data, {
        headers: {
          "Content-Type": "multipart/form-data"
        }
   })
   .then(() => {
        console.log("Success. . . . ")
           alert("Successfully Driver Added");
        })
   .catch(error => console.log(error));

和Laravel中,请求通过一些验证。检查是否填充所有字段是一个简单的验证。我还在使用JWTAuth软件包进行身份验证,并且该令牌是由其生成的。代码太多,无法在这里写下它们。但是我确定您可以理解我的意思。

我得到的回应是这个

POST http://localhost:8000/api/admin/user/create 422 (Unprocessable Entity)

我期望得到的实际结果是success或某些根据验证或令牌检查中某些if条件的errors。我试图弄清此错误可能来自何处。我目前认为这可能是由于帖子请求中缺少csrf_token。当我在Laravel之外发送请求时,表格中缺少CSRF_Token。我不是100%确定的。

所以我的问题是:

  1. 如何将csrf_token包括

  2. 如果此422 errorcsrf_token无关,则可能导致这一点?像Min一样有没有预先的经历?还有任何解决方案?

事先感谢您的帮助。

请,修改捕获块AS @jack 建议:

.catch(error => {
console.log("ERRRR:: ",error.response.data);
});

现在您可以在捕获块中获取错误并处理错误。

.catch(function (error) {
     console.log(error.response.data.errors);
});

请使用此代码我希望它可以。

我也面临着同样的问题,我认为这是由于vue.js中的API请求中缺少一些标题。这里有一些技巧可以帮助您解决此问题。

  1. 确保您是否保护您的API路线(通过Sanctum或其他方法(。如果您要保护,请确保您要在标题中发送身份验证令牌。
  2. 第二个确保您的请求(Axios或JWT(应包含有效的数据,如果您正在发送图像或文件等,请确保我们如何发送。
  3. 首先,通过 dd($ erquest-> all(((; 在Laravel中获取请求并在Laravel中检查..

这些错误可能是由于遵循原因引起的,请确保遵循以下步骤。将本地主机与本地虚拟机(主机(连接。在这里,I'am连接http://localhost:3001/to http://abc.test要遵循的步骤:

  1. 我们必须允许CORS,放置访问控制 - 允许孔:*在请求的标题中可能行不通。安装启用CORS请求的Google扩展名。
  2. 确保您在请求中提供的凭据有效。
  3. 确保已经提供了流浪者。尝试 Vagrant Up -provision 这使Local主机连接到宅基地的DB。

只需单击"开发工具"网络部分中的"预览"选项卡,您将查看实际错误消息。

最新更新