Angularjs中的$Http与$resource

从零开始:小鼠Bulk RNA-seq全流程实战指南 本文提供了一份详尽的小鼠Bulk RNA-seq全流程实战指南,涵盖从软件环境搭建、原始数据质控与清洗、序列比对、基因定量到下游差异表达分析与功能富集。内容面向生物信息学新手,通过清晰的代码示例和步骤解析,帮助读者系统掌握Bulk RNA-seq数据分析的核心技能,并产出可靠的生物学洞见。 阅读详情


一.使用$http
$http服务是只能接受一个参数的函数,这个参数是一个对象,包含了用来生成HTTP请求的配置内容。这个函数返回一个promise对象,具有success和error两个方法。例如代码:
$http({
   method:"GET",
   url:'/xx/xx'
}).success(function(data,status,headers,config){
//当相应准备就绪时调用
}).error(function(data,status,headers,config){
//当响应错误状态返回时调用
})
这个方法实际上返回了一个promise对象。当promise返回的时候,我们可以将$http方法的运行结果当作变量返回。例如:
var promise = $http({
    method = 'GET', 
    url:'/xx/xx'
});
由于$http方法返回一个promise对象,我们可以在响应返回的时候用then方法来处理回调。如果使用then方法,可以得到一个特殊的参数,它代表了相应对象的成功或者失败信息,还可以接受两个可选的函数作为参数。或者使用success和error进行回调代替。
promise.then(function(resp){
//resp是一个响应对象
},function(resp){
//带有错误信息的resp
});

或者使用success/error方法:
promise.success(function(data,status,headers,config){
   //处理成功的响应
});
promise.error(function(data,status,headers,config){
    //处理非成功的响应
})

如果响应码在200--299之间,会认为响应是成功的,success回调将被调用,否则Error回调会被调用。注意:如果响应的结果是重定向,XMLHttpRequest会跟进这个重定向。

快捷方法:
$http服务提供了一些顺手快捷的方法供我们使用,这些方法简化了复杂的设置,只需要提供URL和HTTP方法(或者POST或PUT请求中包含的数据)即可。
用这些快捷的方法,可以将上面的$http的GET请求修改成:
$http.get('/xx/xx');

1.get()
这个方法是发送GET请求的快捷方式。get()可以接受两个参数---url(相对或者绝对)config(可选,对象)。get()方法返回HttpPromise对象。
2.delete()
和上面的一样,但是发送的是delete请求。
3.head()
和上面的一样,但是发送的是HEAD请求
4.jsonp()
和上面的一样。
5.post()
这是用来发送post()请求的快捷方式
post请求可以接受3个参数。url,data,config。同样返回一个HttpPromise对象
6.put()
和post一样,同样接受3个参数请求

二.设置对象
我们把$http当作函数来调用时,需要传入一个设置对象,用来说明如何构造XHR对象。例如,下面的$http当作函数来调用:
$http({
    method:'GET',
    url:'/xx/xx',
    params:{
       'username':'user',
    }            
})
method:即是我们设置的http请求方式
params:json数据即可。
data:这个对象将会被当作消息体发送给服务器的数据。通常在发送post请求时使用。例如:
var blob = new Blob(['Hello world'],{'text':'abc'});
$http({
    method = 'post',
    url:'/',
    data:blob
})
timeout:可以指定毫秒,在指定的毫秒数后执行。

三.响应对象
AngularJs传递给then()方法的响应对象包含4个属性
data(字符串或者对象)
这个数据代表转换过后的响应体(如果定义了转换的话)
status(数值型)
响应HTTP状态码

四.缓存HTTP请求
默认情况下,$http服务不会对请求进行本地缓存,在发送单独的请求时,我们可以通过向$http请求传入一个布尔值或者缓存实例来启用缓存。例如:
$http.get('/xx/xx',{cache:true})
.success(function(data){})
.error(function(data){});
第一次发送请求的时候,$http服务会向/xx/xx发送一个GET请求。第二次同发出一个GET请求的时候,$http服务会从缓存中取回请求结果,而不会真的发送一个HTTP GET请求。
由于设置了启动缓存,AngularJs默认会使用$cacheFactory。这个服务是AngularJs在启动时自动创建的。如果想要对AngularJs使用的缓存进行更多的自定义控制,可以传入一个自定义的缓存实例代替true。
例如,可以使用LRU等缓存。


五.拦截器
任何时候我们要是想为请求添加全局变量,例如身份验证,错误处理等,在请求发送给服务器之前或者从服务器返回时对其拦截,是比较好的实现手段。
例如对于身份验证,如果服务器返回401状态码,我们会希望将用户重定向到登录界面。
AngularJs通过对拦截器提供了一个从全局层面对响应进行处理的途径。
在前端里有拦截器,听起来高大上,其实就是$http服务的一个中间件,用来向应用的业务流程中注入新的逻辑。
拦截器的核心是服务工厂,通过向$httpProvider.interceptors数组中添加服务工厂,在$httpProvider中进行注册。
一共有4种拦截器。2种成功拦截器,2种失败拦截器。
request:
response:
requestError:
responseError:
调用模块的.factory()方法来来创建拦截器,可以在服务中添加一种或者多种拦截器:
angular.module('myApp',[])
.factory('myInterceptor',function($q){
    var interceptor = {
        'request':function(config){
             //成功的请求方法
             return config;
        },
        'response':function(response){
             //响应成功
             return response;
         }
         'requestError':function(rejection){
              //请求发生了错误,如果能从错误中恢复,可以返回一个请求或promise。
              return response;
              //或者,可以通过返回一个rejection来阻止下一步
              //return $q.reject(rejection);
         }
        'responseError':function(rejection){
              //请求发生了错误,如果能从错误中恢复,可以返回一个请求或promise。
              return response;
              //或者,可以通过返回一个rejection来阻止下一步
              //return $q.reject(rejection);
        }
    };    
    reutrn interceptor;
})
然后,我们需要使用$httpProvider在.config函数中注册拦截器
angular.module('myApp',[])
.config(function($httpProvider){
    $httpProvider.interceptors.push('myInrerceptor'); 
});

六.使用$resource
$resource服务可以将$http请求转换成save和update等简单形式。我们可以通过$resource服务来处理复杂的细节,而无需自己写重复和繁琐的的业务代码。
用法:
1.加入angular-resource.js文件。
2.将ngResource当作依赖来进行引用:
angular.module('myApp',['ngResource']);
这样就可以使用ngResource服务。

$resource基于HTTP GET方法
两个HTTP GET类型的方法可以接受3个参数:params,successFn(响应成功时的回调函数),errorFn(响应不成功时的回调函数)

1.get(params,successFn,errorFn)
期望一个JSON类型的响应。例如:
User.get(function(resp){
    //处理响应成功
},function(err){
    //处理错误
})
像这样的不定义具体的参数,get()请求通常用来获取单个资源。
User.get({
     id:'123'
},function(resp){
    //处理响应成功
},function(err){
    //处理错误
})

2.query(params,successFn,errorFn)
期望得到一个JSON格式的资源对象集合。
User.query(function(users){
    //读取集合中的第一个用户
    var user = users[0];
})
query()和get()方法之间的唯一区别就是Angular期望query()方法返回数组。

3个基于非HTTP GET类型的方法
1.save(params,payload,successFn,errorFn) 用于在服务器上生成一个资源
User.save({},{
    name:'Ari'
},function(response){
    //处理响应成功
},function(response){
    //处理非成功响应
})

2.delete(params,payload,successFn,errorFn) 用于在服务器上删除一个实例
User.delete({},{
    id:'123'
},function(response){
    //处理响应成功
},function(response){
    //处理非成功响应
})

3.remove 和delete一样

$resource实例:
上述方法返回数据的时候,响应会被一个原型类所包装,并在实例上添加一些有用的方法。实例对象上会添加下面3个实例方法:
$save()
$remove()
$delete()
这3个方法可以在资源实例上被调用。例如:
User.get({
     id:'123'
},function(resp){
    //处理响应成功
    user,name = "123";
    user.$save();   //save the user
},function(err){
    //处理错误
})    

$resource实例是异步的
这三个方法在调用的时候$resource对象会立即返回一个空对象。由于所有数据都是异步执行,所以这个数据是一个空对象,并不是真实的数据。
当数据从服务器返回后,AngularJs会自动将数据填充上去。
例如:
$scope.user = User.get({id:'123'});
这些方法也提供了回调函数,在数据返回时按照预期的方式调用:
User.get({id:'123'},function(user){
    $scope.user = user;
})

$resource设置对象
1.method是我们需要发送的http请求,他是以下的值之一:GET,POST,DELETE,JSONP,PUT
2.url
3.params
4.isArray:如果isArray设置为true,那么这个动作对象会以数组的形式返回。
5.cache:如果cache属性被设置为true,按么AngularJs会用默认的$http缓存对GET请求进行缓存。
6.timeout:延迟发送。
7.interceptor(对象):拦截器属性有两个可选的方法:response或responseError。这些拦截器像普通的$http拦截器一样,由$http请求对象调用。


$resource服务
我们将$resource服务当作自定义服务的基础。创建自定义服务给我们的应用进行高度自定义的能力,可以对远程服务进行抽象,并且从控制器和视图中解耦出来。
最后,我们强烈建议在自定义的服务对象内部使用$resource。可以一定意义上保证控制器的清洁。
要创建一个封装$resource的服务,需要将$resource的服务注入到我们用来封装的服务对象中,并且像平时一样调用其方法。
如下所示:
angular.module('MyApp',['ngResource'])
.factory('UserService',[
    '$resource',function($resource){
          return $resource('/xx/xx/:id',{
             id:'@'
          },{
             update:{
                   method:'PUT'
              }
          })
    }    
])

基于微信小程序的垃圾分类系统,附源码 垃圾分类小程序管理员功能有个人中心,管理员管理,意见反馈管理,视频类型管理,垃圾类型管理,新闻类型管理,论坛信息管理,环保视频管理,环保知识管理,垃圾信息管理,环保新闻管理,用户管理,知识问答试卷管理,试题管理,测试管理,轮播图管理。用户可以在微信小程序上面注册登录,查看各种环保信息和垃圾信息,还可以参加知识问答等操作。垃圾分类小程序的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。 阅读详情

相关推荐

ArcMap新手必看:Shape属性中的点ZM值到底是什么?如何快速处理

本文深入解析ArcMap中Shape属性中的点ZM值,揭示其在GIS数据中的隐藏维度作用,包括Z值(高程值)和M值(测量值)。针对ZM值可能引发的服务发布问题,提供三种高效处理方案,帮助新手快速掌握数据导入时的ZM值管控策略及精准去除方法。

weixin_42561476的博客 431

$http的使用方式

$http的使用 $http:是对原生的XMLHttpRequest对象的封装 var app = angular.module('myApp', []); // 创建Controller,测试$http如何与服务器交互 app.controller("MyController", function ($scope, $http) { // 1 基本使用方式,只接受一个参数,config对...

arrisking的博客 2786

ANSYS Maxwell:从RMxprt到3D轴向磁通电机的无缝建模指南

本文详细介绍了如何利用ANSYS RMxprt作为高效起点,快速构建3D轴向磁通电机的有限元分析模型。通过RMxprt内置模板输入关键参数并完成磁路法计算后,可一键生成包含几何、材料、绕组及边界条件的即用型Maxwell 3D模型,极大简化了复杂三维结构的建模流程,使工程师能专注于性能优化与仿真分析。

weixin_29281941的博客 555

angularjs中的$http详解

语法: 要将区别先弄清$http服务,它是对原生XMLHttpRequest对象的简单封装,是只能接受一个参数的方法, 这个方法会返回一个promise对象,具有sccess和error两个方法。当然,我们也可以在响应返回时用then 方法来处理,会得到一个特殊的参数,代表了对象的成功或失败信息,或者可以使用success和error回调 代替。 $http( ).then(functi

编程之路 2万+

Mac电脑用Latex论文排版3天速成5天实战de笔记

我后悔了,这五天竞赛搞得我视力都下降了...一个冲动的决定后成为数模竞赛论文写手,3天速成+5天时间=点亮攻克latex写论文技能💡关于Overleaf我是Mac,曾经按照大部分推荐的方式用TEXshop+vs code,但是把模板导入就开始报错。跟着少之又少的适配mac的教程(此时我已知道大概是走错路了)改了配置也无效。海鲜市场找佬改了半天,佬问我:一定要用VC吗?我说,那倒也不是。于是佬推荐我overleaf,三下五除二帮我挑配了环境,美汁汁收了我30块钱。

luwanjoyce的博客 2250

2026软件测试面试题全解析:从用例设计到接口自动化与性能实战

在软件测试岗位的招聘考察中,面试官越来越看重候选人解决实际问题的工程能力,而不仅仅是背诵概念。从最基础的测试用例设计出发,覆盖功能测试、接口测试、自动化测试、性能测试、数据库与Redis一致性等核心知识体系,是应对中高级岗位面试的关键路径。理解Postman抓包、Python脚本、Pytest框架、JMeter压测指标背后的原理,能帮助测试人员构建完整的质量保障思维。当AI辅助测试成为行业新趋势时,掌握数据校验链路与风险识别意识,更能体现资深测试工程师的竞争力。本文围绕2026年高频软件测试面试题,梳理了从

weixin_28676289的博客 245

AngularJS $http用法总结

    最近由于项目需要,在研究AngularJS $http的用法,查了很多资料,发现貌似没有一篇内容可以完整的满足我对$http的基本了解,为了下次方便自己查找,所以特意把最近查到的一些资料和自己的理解记录下来。如果有理解不到位的地方,也欢迎路过的大神可以指点。一.$http简介1.$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。2.$http服务,它是对原生X...

心若向阳,无谓悲伤的博客 1万+

【WRFDA实操第一期】服务器中安装 WRFPLUS 和 WRFDA

【WRFDA实操第一期】安装 WRFPLUS 和 WRFDA

WW、forever的博客 2037

$http服务

我们可以使用内置的http服务直接同外部进行通信。http服务直接同外部进行通信。http服务只是简单的封装了浏览器原生的XMLHttpRequest对象。 1、链式调用 http服务是只能接受一个参数的函数,这个参数是一个对象,包含了用来生成HTTP请求的配置内容。这个函数返回一个promise对象,具有success和error两个方法。http服务是只能接受一个参数的函数,这个参数是一个对

月月颜的博客 1036

大模型测试人员完整学习体系(分层成长路线 + 知识框架 + 落地实操)

本文系统构建了大模型测试工程师的4级能力成长体系:L1(测试执行)-L2(专项测试)-L3(质量体系)-L4(行业标准),详细拆解了每个阶段的核心技能图谱。重点包括:入门层需掌握传统测试基础和大模型产品逻辑;进阶层需精通Prompt用例设计、RAG测试、安全对齐、自动化评测等专项能力;高级层聚焦评测平台搭建与质量体系建设;专家层深入算法对齐与行业标准制定。文章配套提供了分阶段技术工具栈、3-12个月学习路径及5类实战项目建议,形成了一套完整的大模型测试人才能力培养框架。

SmallBull的博客 457

信号处理算法:自适应滤波_(8).自适应陷波器

自适应陷波器是一种强大的工具,广泛应用于电力系统、通信系统和生物医学信号处理等领域。通过自适应调整滤波器的参数,自适应陷波器可以在特定频率处形成陷波,从而有效地抑制噪声或干扰信号。常见的自适应算法包括LMS和RLS,它们各有优缺点,可以根据实际需求选择合适的算法。

2401_87715305的博客 1371

AngularJs $http 请求服务

$http $http是Angular的一个核心服务,它有利于浏览器通过XMLHttpRequest 对象或者 JSONP和远程HTTP服务器交互。 $HTTP API 是基于 $q服务暴露的deferred/promise APIs。 快捷使用方式: $http.get $http.head $http.post $http.put $http.delete $http.jso...

weixin_33984032的博客 272

第42章:AI代码生成的质量标准——何时用AI、何时自己写

> - AI代码生成的质量分级标准:可用、稳定、安全、优雅 > - 一个决策矩阵:什么场景适合用AI,什么场景必须人工编写 > - 如何评估AI生成的代码质量(复杂度、可读性、安全性) > - 实战对比:同一需求下AI生成代码 vs 人工编写代码 > - 团队落地:将质量标准集成到Code Review和CI流程 > - 我如何将团队AI代码接受率从70%提升到90%

sfishfly的博客 161

AngularJs(四):$Http,$resource

一.使用$http $http服务是只能接受一个参数的函数,这个参数是一个对象,包含了用来生成HTTP请求的配置内容。这个函数返回一个promise对象,具有success和error两个方法。例如代码: $http({    method:"GET",    url:'/xx/xx' }).success(function(data,status,headers,config)

Allen 6369

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

httpservice header http ajax,AngularJS中$http、$httpProvider、$resource操作笔记

c方法是自定义一个日志输出方法;function c(str){console.log(str)};设置httpProvider头默认的请求头保存在 $httpProvider.defaults.headers.common 对象中;var app = angular.module("Myapp", ['ngRoute']).config(['$locationProvider','apikey'...

weixin_34061440的博客 508

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

AngularJs 与服务器通信 $http, $q, $resource

$http服务是AngularJS系统自带的,可以用来进行网络通信、获取远程服务器的数据。要记住的是,$http是对浏览器XMLHttpRequest的封装,也就是说,它其实是Ajax。 $http(options).success(successFn).error(errorFn) options:包括url、method(get或post) successFn:成功的回调 erro...

weixin_30633507的博客 214

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

AngularJS的$resource

$http $http服务是基于$q服务的,提供了promise封装,它接受一个配置对象参数,并返回一个promise对象。同时,它还提供了2个方法用来定义Promise回调:success 和 error。 $http({method:"GET", url:"/someUrl"}). success(function(data, status, headers, config){

2万+

AngularJS篇 $resource使用笔记

AngularJS文档中: $http是针对与server通信的XmlHttpRequest的封装,获取数据可以在controller中通过promise的then函数来赋值,$http新添加了success和error函数,如: // Service: $http way. $http.get("serverData/caseList.json").success(function(d...

weixin_30263277的博客 173

【转】AngularJS的$resource

  $http   $http服务是基于$q服务的,提供了promise封装,它接受一个配置对象参数,并返回一个promise对象。同时,它还提供了2个方法用来定义Promise回调:success 和 error。       [javascript] view plaincopy   $http({method:"GET", url:"/someUrl"}...

weixin_34250709的博客 74

$resource in AngularJS

$http $http服务是基于$q服务的,提供了promise封装,它接受一个配置对象参数,并返回一个promise对象。同时,它还提供了2个方法用来定义promise回调:success 和 error。 1 <span style="font-family:'微软雅黑', 'Microsoft YaHei';font...

weixin_34217711的博客 373

AngularJS-内置服务

AngularJS 封装了很多内置的服务,今天就来简单介绍一下: AngularJS服务是单例对象,这意味着只有一个实例被创建,服务使用AngularJS的依赖注入机制来定义和注册。 Angular的服务有两点特性: 1、懒惰实例化 -- 只有当你注入了它的时候,它才会被创建。 2、单例模式 -- 每一个依赖了它的组件只会创建一个实例。服务的创建是由服务工厂来创建的。 常见的内置服...

一叶君 638

[转]AngularJS的$resource

转自:http://blog.youkuaiyun.com/violet_day/article/details/17403207 $http $http服务是基于$q服务的,提供了promise封装,它接受一个配置对象参数,并返回一个promise对象。同时,它还提供了2个方法用来定义Promise回调:success 和 error。 [javascript]view plainco...

weixin_30525825的博客 88

AngularJS学习(九) $resource服务 前后台交互ajax

要在项目中彻底的使用单入口的前端mvc框架来开发,那么都会把和后端交互获取数据改成异步Ajax,这样的话,后端就相当于一个WebServices,比较轻量级的方案就是RESTful,这个不是我们要讨论的内容,我们把注意力放在前端上:如何用AngularJS来和rest风格的WebServices进行交互呢? 熟悉Ajax的童鞋,肯定脑子里第一时间想到的就是XMLHTTPRequest。

Mooner_guo的专栏 3984

AngularJS $resource RESTful example

我想用$resource来叫我的REST风格的Web服务,(我还在工作),但我想看看,如果我得到了我的AngularJS脚本正确的第一。 该待办事项DTO有: {id, order, content, done} :cmd 是这样我就可以打电话api/1/todo/reset清除数据库中的待办事项表。 这里是我的理解注释的代码: function TodoService($

大爱无疆的博客 3889

AngularJS $resource

$resource - $resourceProvider- service in module ngResource A factory which creates a resource object that lets you interact with RESTful server-side data sources. The returned resource obj

SonOfWind0311的博客 828
上一篇: 前端的异步解决方案之Promise和Await-Async
下一篇: async和await简化回调函数嵌套
SunsCheung
博客等级 码龄11年 30粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值