找回密码
 免费注册

[阿里云] 阿里云Nodejs 函数作为入口——设置 HTTP 触发器 参考文档

[复制链接]
admin 发表于 2023-7-16 23:25:18 | 显示全部楼层 |阅读模式
简单实例

  1. var url = require('url');

  2. var { sign } = require("./X-Bogus.js");

  3. var userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36';

  4. exports.handler = (request, response, context) => {
  5.     response.send(JSON.stringify({status:1,data:2}));
  6. }
复制代码
完整实例
  1. var getRawBody = require('raw-body');
  2. var getFormBody = require('body/form');
  3. var body = require('body');


  4. /*
  5. To enable the initializer feature (https://help.aliyun.com/document_detail/156876.html)
  6. please implement the initializer function as below:
  7. exports.initializer = (context, callback) => {
  8.   console.log('initializing');
  9.   callback(null, '');
  10. };
  11. */

  12. exports.handler = (req, resp, context) => {
  13.     console.log('hello world');

  14.     var params = {
  15.         path: req.path,
  16.         queries: req.queries,
  17.         headers: req.headers,
  18.         method : req.method,
  19.         requestURI : req.url,
  20.         clientIP : req.clientIP,
  21.     }
  22.         
  23.     getRawBody(req, function(err, body) {
  24.         for (var key in req.queries) {
  25.           var value = req.queries[key];
  26.           resp.setHeader(key, value);
  27.         }
  28.         resp.setHeader("Content-Type", "text/plain");
  29.         params.body = body.toString();
  30.         resp.send(JSON.stringify(params, null, '    '));
  31.     });
  32.       
  33.     /*
  34.     getFormBody(req, function(err, formBody) {
  35.         for (var key in req.queries) {
  36.           var value = req.queries[key];
  37.           resp.setHeader(key, value);
  38.         }
  39.         params.body = formBody;
  40.         console.log(formBody);
  41.         resp.send(JSON.stringify(params));
  42.     });
  43.     */
  44. }
复制代码
参考网址
  • https://www.jianshu.com/p/f22dbc0d1bd0
  • https://github.com/devsapp/start-fc/tree/master/http-function/fc-http-node.js14/src?spm=a2c4g.449376.0.0.45bc4c93A5TQd8

回复

使用道具 举报

 楼主| admin 发表于 2023-7-16 23:31:36 | 显示全部楼层
Request 结构体

  1. *   `headers`:map 类型,存放来自 HTTP 客户端的键值对。
  2. *   `path`:string 类型,为 HTTP URL。
  3. *   `queries`:map 类型,存放来自 HTTP URL 中的 query 部分的 key - value 键值对, value 的类型可以为字符串或是数组。
  4. *   `method`:string 类型,HTTP 方法。
  5. *   `clientIP`:string 类型,client 的 IP 地址。
  6. *   `url`:string 类型,request 的 url。
复制代码

获取 HTTP body:HTTP 触发器中的 request 兼容 HTTP request,没有提供额外的 body 字段,直接使用 HTTP request 获取 body。
  1. var getRawBody =  require('raw-body')
  2. getRawBody(request,  function(err, data){`
  3. var body = data`
  4. })
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

QQ|Archiver|手机版|小黑屋|信息共享网

GMT+8, 2024-5-14 19:06 , Processed in 0.082186 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表