为了账号安全,请及时绑定邮箱和手机立即绑定

JS HTTP 后 YAML

JS HTTP 后 YAML

达令说 2023-05-11 14:28:01
我无法在 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        });    }}
查看完整描述

2 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

您已经有一个来自 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


查看完整回答
反对 回复 2023-05-11
?
万千封印

TA贡献1891条经验 获得超3个赞

YAML.stringify将 JavaScript 数据结构转换为包含 YML 的字符串。

你没有 JavaScript 数据结构,你只是一个包含 YML 的字符串。

几乎。你有一个错误。您不能'在未加引号的 YML 字符串中使用 raw。

所以:

修复你的 YML:

martin: 
 name: "Martin D'vloper"
  job: Developer
  skill: Elite

不要对其进行双重编码:

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


查看完整回答
反对 回复 2023-05-11
  • 2 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信