如何创建一个将参数传递给rest web服务的控制器?
How do I create a controller that passes a parameter to a rest web service
myApp.controller('consumeProduct', function($scope, $http, $log) {
$http({
method: 'GET',
url: 'http://localhost:8080/Products'
}).then(function(response) {
$scope.products = response.data;
$log.info(response);
});
});
上面有一个控制器,它从rest api中消费并返回所有产品。现在我想创建另一个控制器,它接受一个参数(一个字符串),并尝试使用这个参数并使用这个web服务('http://localhost:8080/Products/ProductName/parameter')。根据参数,服务应该返回一个特定的产品。我怎么能这么做呢?我试图创建一个服务javascript文件来消耗我所有的其他api资源。谢谢。
根据sabithpocker的建议,控制器应该只用于更新视图。你可能想为你的$http请求使用Service或Factory。下面是一个可能实现的示例:
myApp.factory('ProductFactory', function($http, $log) {
var ProductFactory = {};
ProductFactory.getProduct = function(productName) {
return $http({
method: 'GET',
url: 'http://localhost:8080/Products/ProductName/' + productName
})
.then(function(response) {
return response.data;
})
.catch($log.err);
}
return ProductFactory;
});
现在你需要把上面的工厂注入到你的控制器中:
myApp.controller('ProductCtrl', function($scope, $log, ProductFactory) {
ProductFactory.getProduct('apple')
.then(function(returnedProduct) {
$scope.product = returnedProduct;
})
.catch($log.err);
});
如果你为你的$http进程使用工厂或服务,那么你可以在需要的时候随意重用它们(也可以用于其他控制器)。
例如,您可能有另一个视图,您希望在单击按钮时获取产品信息。所以重用你的工厂,你可能有第二个控制器如下:
myApp.controller('ProductListCtrl', function($scope, $log, ProductFactory) {
$scope.productClick = function(productName) {
ProductFactory.getProduct(productName)
.then(function(returnedProduct) {
$scope.product = returnedProduct;
})
.catch($log.err);
}
})
在你的html中:
<td><button ng-click="productClick(product.name)">Show product</button></td>
我希望这对你有帮助。
相关文章:
- 使用rest客户端/javascript验证microsoftoutlook-web(owa)
- 基于 REST API 的 Web 应用程序的动态部分
- 从我的Java Web服务以REST响应(xml)发送图像
- 如何在 phonegap for Android 中使用 rest Web 服务
- 通过 REST 在完整的 javaScript 中完成一个 Web 服务
- 如何在我的Jersey REST Web服务中使用Google OAuth2
- 如何使用 Ajax + jQuery 调用基于 Web 服务 REST
- Chrome 扩展程序与 rest Web 服务通信
- Jquery ajax 在调用 rest Web 服务时失败
- 窗口小部件-使用JSON响应的Web服务REST
- 无法使用参数从html/javascript调用rest web服务
- AngularJS对我的REST Web服务的DELETE请求是纯文本的
- 共享桌面&基于Web的Javascript REST/Ajax
- 无法通过REST和AngularJS通过java web应用程序在youtube服务器上上传视频
- OAuth2流在web前端和REST API
- 使用Node.JS作为REST服务器和web服务器
- 用于REST web服务的JavaScript/jQuery客户端
- 从web客户端访问REST API的最佳方式是什么?
- 如何创建一个将参数传递给rest web服务的控制器?
- 从JavaScript中使用XML WCF REST web服务