猿问

JS HTTP 后 YAML

我无法在 js 中通过 http 发布 yaml。当我对正文使用 JSON.stringify(text) 并具有内容类型 application/json 时,代码有效。如果我使用 YAML stringify,服务器端的正文只是 {}。我有 areatext,我在 html 中输入文本(如 yaml 格式),例如


martin:

  name: Martin D'vloper

  job: Developer

  skill: Elite

客户:


$('#create-yaml2').on('click',async function () {

    var text = $('#yaml-create').val();

    // console.log(text)

    var textYAML = YAML.stringify(text);

    var options = {

      hostname: 'myhostname',

      port: 80,

      path: `/api/postyaml`,

      method: 'POST',

      body: textYAML,

      headers: {

        'Content-Type': 'text/x-yaml'

      }

    };

    var executeReq = http.request(options);

    executeReq.write(textYAML);

    executeReq.end();

  });

编辑:服务器端的功能,在发布 JSON 时打印非空 {}。


exports.functionCalled = async function (req, res) {

    console.log('\n\n\n\n')

    console.log(req.body)

    console.log('\n\n\n\n')

    try {

        res.send(`RECEIVED`);

      } catch (upgradeErr) {

        res.status(422).json({

          message: `Failed`,

          error: upgradeErr

        });

    }

}


达令说
浏览 119回答 2
2回答

慕尼黑5688855

您已经有一个来自 HTML 的字符串,因此您不需要YAML.stringify再次调用 - 文本已经是一个字符串。$('#create-yaml2').on('click',async function () {    var text = $('#yaml-create').val();    // console.log(text)    var textYAML = text;    var options = {      hostname: 'myhostname',      port: 80,      path: `/api/postyaml`,      method: 'POST',      body: textYAML,      headers: {        'Content-Type': 'text/x-yaml'      }    };    var executeReq = http.request(options);    executeReq.write(textYAML);    executeReq.end();  });你可能想做类似的事情$('#create-yaml2').on('click',async function () {    var text = $('#yaml-create').val();try {  YAML.parse(text)} catch(e) {...}...send request确保提供了有效的 YAML

万千封印

YAML.stringify将 JavaScript 数据结构转换为包含 YML 的字符串。你没有 JavaScript 数据结构,你只是一个包含 YML 的字符串。几乎。你有一个错误。您不能'在未加引号的 YML 字符串中使用 raw。所以:修复你的 YML:martin:   name: "Martin D'vloper"   job: Developer   skill: Elite不要对其进行双重编码:var textYAML = $('#yaml-create').val();
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答