在 Hapi 后端框架中,我们可以使用以下两种方式来获取 POST 和 PUT 请求的数据:
- 使用
request.payload
- 使用
request.payload()
方法
在接下来的文章中,我们将详细介绍这两种方法的用法,及其常见应用场景。
使用 request.payload
request.payload
是一个对象,包含了 POST 和 PUT 请求的数据。如果请求数据为 JSON 格式,它将被自动解析为一个对象;如果请求数据为表单格式,它将被自动解析为一个类似于 { key: value }
的对象。
以下是一个使用 request.payload
获取 POST 请求数据的示例代码:
// javascriptcn.com code example const Hapi = require('@hapi/hapi'); const init = async () => { const server = Hapi.server({ port: 3000, host: 'localhost' }); server.route({ method: 'POST', path: '/', handler: (request, h) => { const payload = request.payload; console.log(payload); return 'Hello World!'; } }); await server.start(); console.log('Server running on %s', server.info.uri); }; init();
在上面的示例中,我们创建了一个 POST 请求的路由,请求路径为 /
。在处理请求时,我们使用 request.payload
获取请求数据,并打印到控制台。
使用 request.payload
获取 PUT 请求数据的方式与获取 POST 请求数据的方式类似,这里就不再赘述。
使用 request.payload() 方法
与 request.payload
不同的是,request.payload()
是一个异步方法,用于获取 POST 和 PUT 请求的数据。在处理请求时,如果我们需要等待 POST 或 PUT 请求数据的全部到达后再进行后续操作,可以使用 request.payload()
方法。
以下是一个使用 request.payload()
方法获取 POST 请求数据的示例代码:
// javascriptcn.com code example const Hapi = require('@hapi/hapi'); const init = async () => { const server = Hapi.server({ port: 3000, host: 'localhost' }); server.route({ method: 'POST', path: '/', handler: async (request, h) => { const payload = await request.payload(); console.log(payload); return 'Hello World!'; } }); await server.start(); console.log('Server running on %s', server.info.uri); }; init();
在上面的示例中,我们创建了一个 POST 请求的路由,请求路径为 /
。在处理请求时,我们使用 request.payload()
方法获取请求数据,并打印到控制台。因为 request.payload()
是一个异步方法,需要在它返回结果之前等待请求数据全部到达。
同样的,使用 request.payload()
获取 PUT 请求数据的方式与获取 POST 请求数据的方式类似,这里就不再赘述。
应用场景
- 在处理 POST 和 PUT 请求时,需要获取请求数据,进行后续操作。
- 在处理上传文件的请求时,需要使用
request.payload()
方法等待整个文件上传完成后再进行后续操作。
结论
在 Hapi 后端框架中,我们可以使用 request.payload
和 request.payload()
方法获取 POST 和 PUT 请求的数据。它们的应用场景包括在处理请求时需要获取请求数据并进行后续操作,以及在处理上传文件的请求时等待文件上传完成后进行后续操作。
需要注意的是,使用 request.payload
获取请求数据时,数据已经全部到达;而使用 request.payload()
方法获取请求数据时,需要等待全部请求数据到达后才会返回结果。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6734059e0bc820c58245de8d