如何接受来自 HTML 表单的语言列表作为 HTTP 请求?

How to accept a list of languages as an HTTP request from a HTML form?

我创建了一个简单的自定义网页,允许用户 select 选择多种语言。

我的问题:如何通过接受来自自定义网页的语言列表作为 HTTP 请求,然后在 Azure 逻辑应用程序中遍历它们来实现这一点?我的意思是,由于 [Azure Logic 应用程序是 HTTP 触发的][1],自定义网页是否可以直接向该端点发出请求?例如,当我们从自定义网页调用逻辑应用程序时,我们如何确保当用户提交表单时,我向逻辑应用程序URL创建一个POST并在正文中传递一个内容是这样的:

讨论完问题后,看来您需要的是将数据发送到 Azure Logic HTTP endpoint。这非常简单,因为您可以将数据以任何 json 形状发送到该端点,不需要任何特殊的东西(比如循环多个请求)。

下面是一个为每种语言提交一个网络请求的示例。它使用 FormData 访问 <form /> 元素,然后获取所有 language 值,使用语言列表发出 fetch 请求。然后它记录结果。您可能想做一些不同于记录结果的事情,但希望这能帮助您入门。

function fetchForLanguages(languages) {
  console.info('starting fetch for', languages)
  return fetch("https://reqres.in/api/users", { // this should be your azure provided endpoint instead
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      languages: languages
    })
  }).then(response => {
    if (!response.ok) {
      throw new Error(`Network response was not ok: ${response.status} ${response.statusText}`);
    }
    return response.json()
  })
}


function handleSubmit(event) {
  event.preventDefault()
  const data = new FormData(event.currentTarget)
  const languages = data.getAll('language')
  console.info('languages selected:', languages)
  fetchForLanguages(languages)
    .then((result) => console.log('got result:', result))
}

let form = document.getElementById('language-form')
form.addEventListener('submit', handleSubmit)
<form id="language-form">
  <ul>
    <li><label><input type="checkbox" name="language" value="english"> English</label></li>
    <li><label><input type="checkbox" name="language" value="spanish"> Spanish</label></li>
    <li><label><input type="checkbox" name="language" value="vietnamese"> Vietnamese</label></li>
    <li><label><input type="checkbox" name="language" value="somali"> Somali</label></li>
    <li><label><input type="checkbox" name="language" value="chinese"> Chinese</label></li>
    <li><label><input type="checkbox" name="language" value="amharic"> Amharic</label></li>
    <li><label><input type="checkbox" name="language" value="korean"> Korean</label></li>
    <li><label><input type="checkbox" name="language" value="russian"> Russian</label></li>
    <li><label><input type="checkbox" name="language" value="tagalog"> Tagalog</label></li>
    <li><label><input type="checkbox" name="language" value="arabic"> Arabic</label></li>
    <li><label><input type="checkbox" name="language" value="khmer"> Khmer</label></li>
    <li><label><input type="checkbox" name="language" value="thai"> Thai</label></li>
    <li><label><input type="checkbox" name="language" value="lao"> Lao</label></li>
    <li><label><input type="checkbox" name="language" value="japanese"> Japanese</label></li>
    <li><label><input type="checkbox" name="language" value="deutsch"> Deutsch</label></li>
  </ul>
  <button type="submit">Submit</button>
</form>