如何在AngularJS中的WebAPIGET请求中发送多个SQL查询参数?
How to send multiple SQL query parameters in Web API GET request in AngularJS?
我正在构建一个报告医院库存和销售摘要的应用程序,在 API 的 GET 请求中有 19 个参数要传递,以便在 SQL 中搜索后显示值 table。
我可以在 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 };
});
}
我希望我的输出符合我的查询参数。
页面如下所示:
我建议您阅读 this link 上的 AngularJs 文档。
您的代码存在问题,您应该使用 api 提供给您的 'params' 配置。所以你的代码应该变成这样:
$http.get(url, {params: {init: stockSalesSummaryPayload.init}}).then( ... and so on... )
为了将参数作为请求负载(或者我们可以只说正文)发送,您需要将请求从 GET 转换为 POST。因为我们无法根据 HTTP 协议在 GET 请求的有效负载中发送任何数据。因此,您还必须在后端代码库中进行转换以接受 post 请求和有效负载。
或者如果不想更改任何后端,您可以使用参数。
$http.get(<url>, {
params: <your request data in JSON format>
});
编辑:
根据 angular js 文档:
params – {Object.} – 将使用 paramSerializer 序列化并附加为 GET 参数的字符串或对象的映射。
谢谢!
要自动编码 URL 参数,请使用 config
对象的 params
属性:
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。
我正在构建一个报告医院库存和销售摘要的应用程序,在 API 的 GET 请求中有 19 个参数要传递,以便在 SQL 中搜索后显示值 table。
我可以在 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 };
});
}
我希望我的输出符合我的查询参数。
页面如下所示:
我建议您阅读 this link 上的 AngularJs 文档。
您的代码存在问题,您应该使用 api 提供给您的 'params' 配置。所以你的代码应该变成这样:
$http.get(url, {params: {init: stockSalesSummaryPayload.init}}).then( ... and so on... )
为了将参数作为请求负载(或者我们可以只说正文)发送,您需要将请求从 GET 转换为 POST。因为我们无法根据 HTTP 协议在 GET 请求的有效负载中发送任何数据。因此,您还必须在后端代码库中进行转换以接受 post 请求和有效负载。
或者如果不想更改任何后端,您可以使用参数。
$http.get(<url>, {
params: <your request data in JSON format>
});
编辑:
根据 angular js 文档:
params – {Object.} – 将使用 paramSerializer 序列化并附加为 GET 参数的字符串或对象的映射。
谢谢!
要自动编码 URL 参数,请使用 config
对象的 params
属性:
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。