$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。
// 简单的 GET 请求,可以改为 POST
$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// 请求成功执行代码
}, function errorCallback(response) {
// 请求失败执行代码
});
//或者 直接写 success ,在success 中写响应成功的代码
$http({
method: "POST",
url: "../brand/delete.do",
data: {
ids: $scope.ids
}
}).success(
function (response) {
// 请求成功执行代码
}
);
$http.get('/someUrl?username=zhangsan&password=pw', config).then(successCallback, errorCallback);
$http.post('/someUrl', data, config).then(successCallback, errorCallback);
//还有一些别的
$http.get
$http.head
$http.post
$http.put
$http.delete
$http.jsonp
$http.patch
参考:AngularJS XMLHttpRequest
HTTP 请求报文格式
GET的参数都会放在URL的后面,一般称之为query参数。
POST的都放在HTTP的报文BODY里。
$http.get("../brand/findOne.do?id="+id).success(
function(response){
// 请求成功执行代码
}
A) 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String–> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;
B)用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST;
C) 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;
/**
* 查询一个品牌信息
* @param id 品牌id
* @return
*/
@RequestMapping("/findOne")
public TbBrand findOne(@RequestParam long id){
return service.findOne(id);
}
参数名不一致,@RequestParam(value="xx") long id
$http.post("../brand/ethodName.do",$scope.entity).success(
function(response){
// 请求成功执行代码
)
其中的 $scope.entity 就是要提交的数据
接收参数的方式:
@RequestBody
该注解常用来处理Content-Type: 不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等;
它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。
因为配置有FormHttpMessageConverter,所以也可以用来处理 application/x-www-form-urlencoded的内容,处理完的结果放在一个MultiValueMap
/**
* 更新一个品牌信息
* @param brand 品牌
* @return
*/
@RequestMapping("/update")
public Result update(@RequestBody TbBrand brand){
//代码
}
可以直接封装成对象,当前也可以封装为数组,集合什么的。
$http({
method: "GET",
url: "../brand/findOne.do",
params: {
id: id
}
}).success(
function(){
//请求成功
}
);
当你这样写的时候它会把id写到url后面
params这个参数是用在GET请求中的,而POST/PUT/PATCH就需要使用data来传递;
在后台接收的方式 ,使用@RequestParam 即可。
$http({
method: "POST",
url: "../brand/delete-reqpayload.do",
data: {
ids: $scope.ids
}
}).success(
function (response) {
// 请求成功执行代码
}
);
这样传递参数,跟简单post请求一样,参数都存放到了Request Payload。
后台需要使用 @RequestBody 接收参数
@RequestMapping("/delete-reqpayload")
public Result delete_reqplayload(@RequestBody Ids ids){
System.out.printf("ids"+ids.toString());
}
参考:@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
如果想在后台使用@RequestParam 接收 Post 请求参数,需要将其参数进行序列化
代码:
$http({
method: "POST",
url: "../brand/delete.do",
data: {
ids: $scope.ids
},
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, //将其变为 form-data 参数形式
transformRequest: function(obj) { //序列化参数
var str = [];
for (var s in obj) {
str.push(encodeURIComponent(s) + "=" + encodeURIComponent(obj[s]));
}
return str.join("&");
}
}).success(
//请求成功
}
);
后台接收,看你对应的数据类型是什么
@RequestMapping("/delete")
public Result delete(@RequestParam Long ids[]){
//代码
}