AngularJs $ http.get:将对象数组作为参数发送

时间:2017-10-24 07:40:30

标签: javascript c# angularjs rest http

我遇到了使用AngularJS找到将对象数组发送到API的正确方法的问题。

前端代码

     function getPrices(articles) {
            return $http.get('http://someurl/api/prices/getprices', { params: { articles: articles } }).then(function (res) {
                   // do something with prices
                }, function (err) {
                    // handle error
                });
      }

文章属于

类型
var oneArticle = {
  code: 'someCode',
  quantity: 1,
  stockUnit: 'piece'
}

Api代码

[VersionedRoute("getprices")]
[HttpGet]
public IHttpActionResult GetPrices([FromUri]List<Article> articles) {
 // do something with input
}

文章课

public class Article {
  public string Code {get;set;}
  public int Quantity {get;set;}
  public string StockUnit {get;set;}
}

有些问题:

1)为什么我的API上没有收到任何数据。文章总是空的

2)这是正确的做法吗?

由于

编辑1: 使用post选项我在请求中收到以下数据,但我仍然不知道如何在API上处理它。

enter image description here

3 个答案:

答案 0 :(得分:1)

我终于明白了。

@Tomo:感谢您的努力

<@> @Naimad:道歉,你从一开始就是对的。

以下是工作解决方案:

前端:

function getPrices(articles) {
            return $http.get('http://someurl/api/prices/getprices', articles).then(function (res) {
                   // do something with prices
                }, function (err) {
                    // handle error
                });
      }

后端

[VersionedRoute("getprices")]
[HttpPost]
public IHttpActionResult GetPrices([FromBody]List<Article> articles) {
 // do something with code
}

答案 1 :(得分:0)

你试过吗

return $http({
            url: '/api/SomeCtrl/GetPrices',
            method: 'POST',
            data: JSON.stringify({ Article : articles }),
            headers: { 'Content-Type': 'application/json' }
        });

public IHttpActionResult GetPrices([FromUri]Article articles) {

[HttpPost]
public void GetPrices(Article articles)

而不是无效,你把任何你返回的东西 ?

答案 2 :(得分:0)

.controller('LoginController', ['$scope', '$http', function ($scope, $http) {
    function getPrices(articles) {
        $http.get('http://someurl/api/prices/getprices')
        .success(function (data) {
            articles: data
        }
    }
}])