如何使用角度js向azure ML Web服务发布请求?

时间:2017-06-05 05:58:15

标签: angularjs azure

我正在尝试使用角度js为azure ML模型构建UI。我设计了一个HTML页面,其中使用ng-model捕获用户输入现在我们面临的问题是,由于azure希望以下面提到的格式在POST请求中发送数据,因此会收到400 Bad request error。当我在Post Request中测试此样本值时,我收到200条成功消息。我应该如何在POST请求中发送值的用户输入。感谢任何帮助。

Azure预期的Request body样本:

{

 "Inputs": {

    "input1": {
      "ColumnNames": [
        "col1",
        "col2",
        "col3"       
      ],
      "Values": [
        [
        "value1",
        "value2",
        "value3"
        ]
      ]
    }
  },
  "GlobalParameters": {}
}

我的测试javascript是

$http ({

          method  : 'POST',
          url     : 'url',
          data    : '{"Inputs": {"input1": {"ColumnNames": ["col1","col2","col3"],"Values": ["value1","value2","value3"]]}}}',

          headers : {'Content-Type': 'application/json',                    
                'Authorization' : 'Bearer apikey'
                } 

1 个答案:

答案 0 :(得分:0)

当您生成数据有效负载时,似乎您在angularjs应用程序中有错误。

在样本中,

"Values": [
        [
        "value1",
        "value2",
        "value3"
        ]
      ]

value是一个嵌套数组。

但是在您的前端代码段中:

{"Inputs": {"input1": {"ColumnNames": ["col1","col2","col3"],"Values": ["value1","value2","value3"]]}}}

这是一个invaild json对象。 (缺少[ behide "Values")。

我建议您可以在Request body示例显示时生成一个对象,并直接在$http的post body有效负载中设置id对象,而不是手动编写json字符串。