首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果2+结果为1,而不是数组,则Angular 5 HttpClient 'get‘调用将返回数组

如果2+结果为1,而不是数组,则Angular 5 HttpClient 'get'调用将返回数组。

在Angular 5中,HttpClient是一个用于发起HTTP请求的模块。当使用HttpClient的'get'方法发起请求时,它会默认期望服务器返回一个数组类型的响应数据。

然而,如果2+结果为1,而不是数组,那么服务器返回的响应数据类型与HttpClient的期望不符。在这种情况下,Angular 5 HttpClient 'get'调用将抛出一个错误。

为了解决这个问题,我们可以通过使用RxJS的'catchError'操作符来处理错误。在错误处理函数中,我们可以检查响应数据的类型,如果不是数组,则可以进行相应的处理,例如将其转换为数组或者抛出自定义的错误。

以下是一个示例代码:

代码语言:typescript
复制
import { HttpClient } from '@angular/common/http';
import { catchError } from 'rxjs/operators';
import { throwError } from 'rxjs';

constructor(private http: HttpClient) {}

getData() {
  return this.http.get<any>('api/data')
    .pipe(
      catchError(error => {
        if (error instanceof Array) {
          // 处理响应数据为数组的情况
          return throwError('响应数据不是数组');
        } else {
          // 处理响应数据不是数组的情况
          return throwError('响应数据转换为数组');
        }
      })
    );
}

在上面的代码中,我们使用了RxJS的'catchError'操作符来捕获错误,并在错误处理函数中进行相应的处理。如果响应数据的类型为数组,则抛出一个自定义的错误;如果响应数据的类型不是数组,则抛出另一个自定义的错误。

这样,无论响应数据是数组还是其他类型,我们都可以根据实际情况进行相应的处理。

关于Angular 5 HttpClient的更多信息,您可以参考腾讯云的产品介绍链接:Angular 5 HttpClient

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Angular 从入坑到挖坑 - HTTP 请求概览

通过使用 postman 进行接口调用可以发现,接口返回的响应信息如下 ?...HttpClient 默认的返回信息格式都是 json 对象,在后端接口返回的并不是 json 对象的情况下,需要手动的设置响应类型(text、blob、arraybuffer...) import {...根据 postman 的调用示例,在服务中定义一个方法用来提交毒鸡汤信息,这里的 SetQuotesResponseModel 接口返回的响应对象 import { Injectable } from...; } } 当请求发生错误时,通过在 HttpClient 方法返回的 Observable 对象中使用 pipe 管道错误传递给自定义的错误处理器,从而完成捕获错误信息的后续操作 ?...4.3、请求和响应拦截 在向服务器发起请求时,一般是需要我们在请求头中添加上授权的 token 信息,与其当后端接口返回我们无权访问时再来处理,是不是可以在发起请求前去进行拦截判断,如果不包含 token

5.3K10
  • Angular进阶教程2-

    依赖注入(DI) 依赖项( 服务/对象 )注入是一种设计模式,在这种设计模式中,类会从外部源请求依赖项\color{#0abb3c}{请求依赖项}请求依赖项不是创建它们。...如果你在组件中\color{#0abb3c}{组件中}组件中的元数据\color{#0abb3c}{元数据}元数据上定义了providers,那么angular会根据providers这个组件创建一个注入器...Provider的唯一标识,用于定位依赖值,也就是应用中使用的服务名 // useClass属性代表使用哪个服务类来创建实例 }) 复制代码 在模块中注入服务 在根组件\color{#0abb3c..._goodsListService.getHttpResult就是返回observable,他可以是api的调用,可以是事件的调用等等 复制代码 我们可以把上述的调用方式抽象一下observable.subscribe..._goodsListService.getHttpResultTwo('12', 'zs')]) .subscribe(resArr => { // 此时的返回结果会被按顺序放在一个数组

    4.1K30

    【响应式编程的思维艺术】 (5Angular中Rxjs的应用示例

    涉及的运算符 bufferWithTime(time:number)-每隔指定时间流中的数据以数组形式推送出去。.../message.service';//某个自定义的服务 import { HttpClient, HttpParams, HttpResponse } from '@angular/common/http...使用Rxjs构建Http请求结果的处理管道 3.1 基本示例 尽管看起来Http请求的返回结果是一个可观测对象,但是它却没有map方法,当需要对http请求返回的可观测对象进行操作时,可以使用pipe操作符来实现...,{observe:'response'}); } http请求默认返回一个冷Observable,每当返回的流被订阅时就会触发一个新的http请求,Rxjs中通过shareReplay( )操作符一个可观测对象转换为热..., shareReplay() // 转换管道的最后这个流转换为一个热Observable ) } 在调用的地方编写调用代码: sendGet(){ let obs

    6.7K20

    Angular 6 HttpClient 快速入门

    本教程介绍如何在 Angular 6.x 中使用 HttpClient 发送 Http 请求,如 get、post、put 和 delete 请求。...发送 Get 请求 import { Component, OnInit } from "@angular/core"; import { HttpClient, HttpParams, HttpHeaders...每当调用 set() 方法,将会返回包含新值的 HttpParams 对象,因此如果使用下面的方式,将不能正确的设置参数。...)); } 获取完整响应 默认情况下,HttpClient 服务返回的是响应体,有时候我们需要获取响应头的相关信息,这时你可以设置请求 options 对象的 observe 属性值 response...=> { console.dir("Response: " + res.status); }); 设置响应类型 如果你期望的响应对象的格式不是 JSON,你可以通过 responseType 属性来设定响应类型

    5K30

    前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定

    这个指令有三种使用方式,这三种方式取决于表达式计算结果如果表达式结果字符串,字符串使用空格分隔的一个或多个类名。...如果表达式结果一个数组数组中每个元素使用空格分隔的一个或多个类名字符串。 如果表达式结果一个对象,对象中的每个key-value中如果键值真时键名作为类名。...: 4.3、添加元素 一个或多个新元素添加到数组未尾,并返回数组新长度 arrayObj. push([item1 [item2 [. . ....对应的元素,如果省略 end 复制 start 之后的所有元素 arrayObj.slice(start, [end]);  多个数组(也可以是字符串,或者是数组和字符串的混合)连接一个数组返回连接好的新的数组...: 4.6、拷贝 返回数组的拷贝数组,注意是一个新的数组不是指向 arrayObj.slice(0);  返回数组的拷贝数组,注意是一个新的数组不是指向 arrayObj.concat();  因为数组是引用数据类型

    15.3K100

    前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定

    这个指令有三种使用方式,这三种方式取决于表达式计算结果如果表达式结果字符串,字符串使用空格分隔的一个或多个类名。...如果表达式结果一个数组数组中每个元素使用空格分隔的一个或多个类名字符串。 如果表达式结果一个对象,对象中的每个key-value中如果键值真时键名作为类名。...4.3、添加元素 一个或多个新元素添加到数组未尾,并返回数组新长度 arrayObj. push([item1 [item2 [. . ....4.5、截取和合并 以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 复制 start 之后的所有元素 arrayObj.slice(start, [end]);  多个数组...4.6、拷贝 返回数组的拷贝数组,注意是一个新的数组不是指向 arrayObj.slice(0);  返回数组的拷贝数组,注意是一个新的数组不是指向 arrayObj.concat();  因为数组是引用数据类型

    12.6K30

    js数组中一些实用的方法(forEach,map,filter,find)

    ,只是原来的数组拷贝了一份,把拷贝的数组项进行更改,支持链式调用 使用场景 场景1: 拷贝原数组,改变一些东西,假定有一个数组(A),A数组中的值以双倍的数值放到B数组中 Es5写法 var numbersA..., 回调函数返回结果一个boolean值,若结果真,返回匹配的项,若为假,返回一个空数组,它不会改变原有数组,返回的是过滤后的新数组 写法 数组对象.filter(function(currentVal...,若结果假,返回undefined ?...,map,filter,find,方法都是不改变原有数组的,当然还有every,some等一些方法,forEach方法没有返回值,默认返回undefined,所以它不支持链式调用map,filter...方法会返回一个新的数组 find方法返回的根据迭代器函数结果boolean值,若结果返回指定的元素,若无返回undefined 改变原有数组的有:增加(push,unshift),删除(pop

    2.8K20

    AngularJS源码分析之依赖注入$injector

    首先从get方法说起,get方法主要获取指定名称的服务,通过angular的injector方法获取的是instanceInjector,当缓存中没有该服务对象(依赖)时,我们需要执行factory(...首先获取函数的所有依赖名,通过annotate方法完成之后,如果options中提供了对于名称的依赖,使用,否则通过get方法获取依赖,最后传入函数,并将函数的执行结果返回。...invoke返回结果往往是一个服务对象。 instantiate方法主要根据提供的构造函数创建一个示例,用作依赖或提供服务。...$provide对象上,而我们通过angular.module('app',[]).provider(...)方式调用的provider函数,会在module加载期间调用(该调用抽象成一个数组,即[provider...对于$scope和$location服务而言,在AngularJS初始化时已经注入到Angular中,因此可以获取相应的provider对象,执行相关的方法返回$scope和$location对象,locationService

    1.2K50

    Flutter开发-网络请求与JSON转换

    id=12&name=wendu") print(response.data.toString()); 对于GET请求我们可以query参数通过对象来传递,上面的代码等同于: response=await...HttpClient会对整个dio实例生效,如果你想针对某个应用请求单独的代理或证书校验策略,可以创建一个新的dio实例即可。...jsonMap); 输出如下 jsonMap runType is _InternalLinkedHashMap 可以看出 json.decode(personJson) 方法返回的类型..._InternalLinkedHashMap ,意思就是这个 Map 的 key String 类型, value 的类型 dynamic 的,也就是动态的 数组的转换 [ { "...插件安装即可 使用方式 在要生成文件的文件夹上右键New -> dart bean class File from JSON 该插件转换要求JSON的最外层对象,不能为数组数组时无法转换。

    3.6K10

    Flutter开发-网络请求与JSON转换

    id=12&name=wendu") print(response.data.toString()); 对于GET请求我们可以query参数通过对象来传递,上面的代码等同于: response=await...HttpClient会对整个dio实例生效,如果你想针对某个应用请求单独的代理或证书校验策略,可以创建一个新的dio实例即可。...jsonMap); 输出如下 jsonMap runType is _InternalLinkedHashMap 可以看出 json.decode(personJson) 方法返回的类型..._InternalLinkedHashMap ,意思就是这个 Map 的 key String 类型, value 的类型 dynamic 的,也就是动态的 数组的转换 [ { "...插件安装即可 使用方式 在要生成文件的文件夹上右键New -> dart bean class File from JSON 该插件转换要求JSON的最外层对象,不能为数组数组时无法转换。

    1.7K20

    Java生成微信小程序二维码,5种实现方式,一个比一个简单

    对于如何生成微信小程序二维码,本文一共列举了5种实现方式,其中第1、2种是网上常见的方式,第3、4、5种封装的更为优雅,文末可打包下载开箱即用的全套源码,我更期待老铁的文末 投票 :哪种方式你更喜欢?...---- 先看官网 项目主要用的是微信官方提供的服务端能力,考虑到涉及secret和token等安全问题,所以从架构上设计的调用链路:前端->后端API->微信API。...但作为底层基于Apache HttpClient方式的unirest-java,提供了更为便捷、链式调用、功能强大的API用于http请求!核心代码如下(一行代码搞定,屌爆了!!!)...,因为我们需要先判断返回结果是否包含errcode,如果不包含,才是图片Buffer!...如果不包含errorCode,那么byte[]数组不管是保存本地,还是转成Base64,或者上传到OSS,都非常湿滑了!

    2.1K20

    一文吃透接口调用神器RestTemplate

    格式数据:传递 java 对象 4.7、发送 json 格式数据:传递 java 对象,返回泛型 4.8、发送 json 字符串格式数据 5、DELETE、PUT、OPTION 请求 5.1、DELETE...】所有系列高清 PDF 1、RestTemplate 概述 发送 http 请求,估计很多人用过 httpclient 和 okhttp,确实挺好用的, Spring web 中的 RestTemplate...考虑到 RestTemplate 类是调用 REST 服务而设计的,因此它的主要方法与 REST 的基础紧密相连就不足奇了,后者是 HTTP 协议的方法:HEAD、GET、POST、PUT、DELETE..."; //getForEntity方法,返回ResponseEntity类型 // ResponseEntity中包含了响应结果中的所有信息,比如头、状态、body ResponseEntity...public void test5() { RestTemplate restTemplate = new RestTemplate(); //返回泛型 String url

    9.4K64

    用VSCode开发一个基于asp.net core 2.0sql server linux(docker)ng5bs4的项目(2)

    数据库添加种子数据. 添加种子数据的方法有很多, 可以写一个方法然后在Startup里面调用....尽管请求返回结果是200, 但是你也可以发现结果并不正确, 看一下终端命令行: ?...分别设置了5个路由, 默认路由直接跳转到home, 如果没有匹配路由到话也是跳转到home....可以看到发生了错误404, angular客户端并没有找到这个api. 这是因为angular运行的是自己的web服务器端口4200, asp.net core也是运行自己服务器端口5000....然后重新运行angular项目, 这时只能使用 npm start这个命令, 如果想使用ng serve 命令必须把后边的参数加上. 重新访问TvNetworks菜单: ? 这次读取api成功了.

    2.4K50

    写一个去除数组中重复元素的函数

    1.使用ES6的Set数据结构 Set是一种只存储唯一值的数据结构,因此任何重复的元素都会被自动忽略。然后,我们使用扩展运算符…Set对象转换回数组,并返回这个新的数组。...拓展一下‍♀️ indexOf() indexOf() 是 JavaScript 数组(Array)对象的一个方法,它用于返回数组中可以找到给定元素的第一个索引,如果不存在,返回 -1。...如果该索引值大于或等于数组长度,返回 -1,即数组不会被搜索。如果负值,则将其作为从数组末尾开始的偏移量。即使该值负数,它仍然从前往后搜索。如果省略该参数,整个数组都会被搜索。...accumulator(必需):累积器,累积回调函数的返回值;它是上一次调用回调时返回的累积值,或者是initialValue(如果提供了的话)。...在没有初始值的空数组调用reduce报错。 reduce() 方法非常适合数组元素组合成单个输出值,比如求和、求积或者数组对象合并为单一对象。

    11510
    领券