正在从 HTML 向 AWS API 网关提交 HTTP 请求

Submitting HTTP request from HTML to AWS API gateway

我有一个带有按钮的 HTML 表单,它允许我以“text/plain”或“application/x-www-form-urlencoded”格式发送 HTTP 请求。

text/plain: 
stateMachineArn=arn:aws:states:us-east-1:0111111165:stateMachine:MyStateMachine
name=ExecutionName
first_name=test
last_name=test2

application/x-www-form-urlencoded:
stateMachineArn=arn:aws:states:us-east-1:0111111165:stateMachine:MyStateMachine&name=ExecutionName&first_name=test&last_name=test2

但 AWS API 网关默认仅接收 JSON 格式(“输入”必须转义)

{
    "input": "{\"first_name\" : \"test\",\"last_name\" : \"test2\"}",
    "name": "ExecutionName",
    "stateMachineArn": "arn:aws:states:us-east-1:0111111165:stateMachine:MyStateMachine"
}

如何将这两种格式转换为上述格式JSON?

如果您有这样的表格:

<form>

  <input type="stateMachineArn" name="stateMachineArn" id="stateMachineArn" />
  <input type="name" name="name" id="name" />
  <label for="first_name">First name</label>
  <input type="first_name" name="first_name" id="first_name" />

  <label for="last_name">Last name</label>
  <input type="last_name" name="last_name" id="last_name" />

  <button type="submit">Submit</button>
</form>

您可以像这样在 js 中处理提交并像您一样记录响应 - 不知道您是否正在这样做:

function handleSubmit(event) {
  event.preventDefault();

  const data = new FormData(event.target);

  const value = Object.fromEntries(data.entries());

  console.log({ value });
}

const form = document.querySelector('form');
form.addEventListener('submit', handleSubmit);

此时如果您想将数据对象转换为 json,然后再将其发送到某个地方或只是为了记录它,您尝试过吗?

 console.log(JSON.stringify(data));

还是这个?

 console.log(JSON.stringify(value ));

编辑

发送请求:

$.ajax({
    type: "POST",
    url: "/webservices/PodcastService.asmx/CreateMarkers",
    data: JSON.stringify(data),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data){alert(data);},
    error: function(errMsg) {
        alert(errMsg);
    }
});