首页 > 解决方案 > 从单独的 Vue JS 前端使用 Hapi JS API。request.payload 未定义

问题描述

我在 Hapi JS 上迈出了第一步。我的应用程序与 SQL Server 数据库连接。

但是,我正在尝试将登录数据从 Vue CLI JS 前端发送到 Hapi JS Api,为此我使用 axios。登录是一个“SELECT * FROM”查询,所以我把“get”放在了axios函数代码中。

在此处输入图像描述

这是有效的功能,但我无法通过 URL 发送密码,这不安全,使用 F12 您可以看到用户凭据是否免费加密。

在此处输入图像描述

这是接收数据的 Hapi JS 路由。它是这样工作的,但对我来说这样做不值得。我希望我的代码像这样工作:

在此处输入图像描述

axios函数

在此处输入图像描述

使用“request.payload”而不是“request.query”的 Hapi JS 路由

但是当我尝试这个时,控制台中有一个错误,上面写着:“无法从未定义的 request.payload 解构用户名”,实际上 request.payload 的 console.log 是未定义的:CI 真的需要帮助。

标签: javascriptnode.jsvue.jshapijshapi.js

解决方案


您的问题源于您的端点 HTTP 方法。HTTP GET 请求不能有负载。您应该将其作为 POST 请求发送。

在 axios 上:


axios.post(config.url, { username: parametros.username, password: parametros.password }).then(...)

在 hapi 方面,您应该method: 'POST'在路线定义中进行设置。这样,您现在应该可以访问该request.payload属性。您还应该验证从客户端收到的有效负载。这是一些关于它的文档:https ://hapi.dev/tutorials/validation/?lang=en_US 。

另外,如果您想将 cookie 添加到服务器的响应中,您应该使用 Response Toolkit(h处理程序中的第二个参数)设置它:


return h.response(someValue).state('auth-cookie', { NOM_USUARIO: account.NOM_USUARIO })

以下是一些帮助您的文档: https ://hapi.dev/api/?v=20.1.0#-hstatename-value-options

祝你好运和 hapi 编码。


推荐阅读