如何在AngularJS的Web API GET请求中发送多个SQL查询参数?

时间:2019-09-01 05:38:41

标签: angularjs angular-http

我正在构建一个用于报告医院库存和销售摘要的应用程序,并且有19个参数要传递给API的GET请求,以便在SQL表中搜索后显示值。

我可以在URL中传递2个参数并且可以,但是在URL中传递20个参数比较麻烦且难以管理。

如何在AngularJS的GET请求中发送此类SQL查询参数?

我尝试在Postman App上传递URL中的所有参数,并且可以,但是我想将其作为对象或诸如此类传递:

var stockSalesSummaryPayload = {
    init: '2010/01/10',
    final: '2019/01/01',
    c_price: '0',
    XCHNGRT: '0.0',
    status: '0.0',
    firm: '0',
    userid: '0',
    all_firm: '0',
    bulk_stk: true,
    edited: true,
    super: '0',
    store: '0',
    grpid: '0',
    compcode: '0',
    ac_code: '0',
    zero: true,
    sales: true,
    bulksystem: '0',
    div_id: '0'
};

vm.fetchStockSalesSummaryList = function () {

    // CODE WORKING
    $http.get('http://192.168.50.112/medipro.api.Medipro/api/stocksalessummary?init=2015/01/10&final=2019/01/10&c_price=0&XCHNGRT=0.0&status=0.0&firm=0&userid=0&all_firm=0&bulk_stk=true&edited=true&super=0&store=0&grpid=0&compcode=0&ac_code=0&zero=true&sales=true&bulksystem=0&div_id=0')

    // CODE NOT WORKING
    $http.get('http://192.168.50.112/medipro.api.Medipro/api/stocksalessummary', stockSalesSummaryPayload)
        .then(function (result) {
            vm.stockSalesSummaryList = result.data;
            console.log(result.data);
        }, function (error) {
            console.log(error);
            vm.notification = { mode: 'danger', message: 'Error: ' + error.data.message };
        });
}

我希望我的输出按照我的查询参数进行。

页面如下:

PAGE LOOKS LIKE THIS

3 个答案:

答案 0 :(得分:0)

我建议您阅读this link上的AngularJs文档。

您的代码存在的问题是,您应该使用api提供给您的“参数”配置。因此您的代码应如下所示:

$http.get(url, {params: {init: stockSalesSummaryPayload.init}}).then( ... and so on... )

答案 1 :(得分:0)

要发送参数作为请求有效负载(或者我们可以说正文),您需要将请求从 GET转换为POST 。由于我们无法根据HTTP协议在GET请求的有效负载中发送任何数据。因此,您还必须在后端代码库中进行转换,以接受发布请求和有效负载。

或者,如果不想更改任何后端,也可以使用params。

$http.get(<url>, {
    params: <your request data in JSON format>
});

编辑:

根据angular js文档:

参数– {Object。} –字符串或对象的映射,这些字符串或对象将使用paramSerializer序列化并附加为GET参数。

谢谢!

答案 2 :(得分:0)

要自动编码URL参数,请使用params对象的config属性:

var stockSalesSummaryPayload = {
    init: '2010/01/10',
    final: '2019/01/01',
    c_price: '0',
    XCHNGRT: '0.0',
    status: '0.0',
    firm: '0',
    userid: '0',
    all_firm: '0',
    bulk_stk: true,
    edited: true,
    super: '0',
    store: '0',
    grpid: '0',
    compcode: '0',
    ac_code: '0',
    zero: true,
    sales: true,
    bulksystem: '0',
    div_id: '0'
};

var url = "http://192.168.50.112/medipro.api.Medipro/api/stocksalessummary";
var config = { params: stockSalesSummaryPayload };

$http.get(url, config)
.then(function (result) {
    vm.stockSalesSummaryList = result.data;
    console.log(result.data);
}, function (error) {
    console.log(error);
    vm.notification = { mode: 'danger', message: 'Error: ' + error.data.message };
});

AngularJS框架会自动将搜索参数正确地添加到带有保留字符的URL percent encoded