标签: angular-httpclient

如何在角度应用程序中显示对象的数据?

我在显示 API 响应数据时遇到问题。我收到的数据是对象中的对象。我尝试显示数据,JSON.striginfy但数据不清楚。

\n

我从 API 收到的数据:

\n

在此输入图像描述

\n

JSON:

\n
\n

{"102":{"173":"AX","175":"ZX","179":"Xantia","183":"XM","186":"回避","189": "C3","191":"盛宝","193":"Jumpy","194":"柏林戈","196":"Xsara","200":"C15","204":"跳线","206":"C8","208":"C5","216":"C2","218":"C4","222":"C1","224":"C6", "233":"C-Crosser"、"241":"尼莫"、"5007":"DS3"、"10194":"DS4"、"15270":"DS5"、"15382":"C-零","15411":"C-Elys\xc3\xa9e","16100":"SpaceTourer","16536":"型号","16693":"柏林戈电气"},"103":{"244" :“Tico”,“245”:“Nexia”,“246”:“Espero”,“247”:“赛车手”,“248”:“Evanda”,“249”:“卡洛斯”,“250”:“努比拉","252":"莱甘扎","254":"拉诺斯","255":"卢布林 3","256":"马蒂斯","257":"科兰多","259":"穆索","262":"主席","263":"塔库马","264":"马蒂兹二世","265":"拉诺斯二世","1997":"FSO","2001":"卢布林II","16537":"型号"},"104":{"266":"Cinquecento","267":"Punto","269":"布拉沃","271":"布拉瓦"," 273":"Coup\xc3\xa9","274":"Barchetta","275":"尤利西斯","277":"派力奥","278":"Multipla","281":"Croma" ,"283":"Tempra","289":"Ducato","290":"Tipo","292":"Uno","294":"熊猫","295":"Marea"," 300":"126 P","301":"Dobl\xc3\xb3","304":"Stilo","308":"Seicento","310":"想法","312":"Scudo ","320":"Grande Punto","326":"Linea","329":"500","331":"Fiorino","333":"Sedici","1987":"Strada" ,"4936":"Punto Evo","4938":"Punto 实际","5011":"500C","5015":"Qubo","5102":"500 C","15202":"弗里蒙特","15274":"熊猫经典","15416":"500L","15509":"500 L","15830":"500X","16124":"124 Spider","16125":"塔伦托","16195":"后卫", "16538":"车型"},"105":{"336":"嘉年华","337":"焦点","339":"护航","340":"蒙迪欧","346": "天蝎座","352":"过境","359":"塞拉","361":"猎户座","369":"卡","370":"探索者","372":"融合","374":"StreetKa","375":"Galaxy","377":"Tourneo","385":"Maverick","392":"Puma","402":"S-MAX ","406":"C-MAX","415":"Kuga","2016":"Ranger","15418":"B-MAX","15878":"野马","16170": "Edge","16390":"EcoSport","16539":"MODEL","16655":"Grand Tourneo"},"106":{"421":"思域","422":"爵士乐" ,"423":"HR-V","424":"前奏","425":"传奇","426":"航天飞机","427":"流","430":"S2000" ,"432":"CR-V","434":"雅阁","439":"Integra","450":"FR-V","456":"城市","466":"洞察力","5018":"CR-Z","16540":"MODEL","17088":"e"},"107":{"467":"口音","468":"Lantra" ,"469":"索纳塔","471":"H100","472":"Getz","474":"S 轿跑车","475":"小马","477":"轿跑车", "478":"加洛珀","480":"H1","486":"阿托斯","489":"XG","490":"Trajet","494":"圣达菲"," 496":"伊兰特","497":"图森","499":"矩阵","501":"特拉肯","508":"宏伟","515":"i30","520" :“i10”,“522”:“ix55”,“523”:“i20”,“4940”:“ix35”,“5220”:“ix20”,“5222”:“创世纪”,“5280”:“ Veloster","10198":"i40","15598":"大圣达菲","16171":"Ioniq","16307":"H350","16358":"科纳","16541":"型号”,“16677”:"Kona Electric","16678":"Ioniq Electric"},"108":{"525":"Neon","526":"Stratus","527":"Vision","528":"新约克","529":"航行者号","531":"PT 巡洋舰","532":"大航行者号","533":"赛百灵","536":"萨拉托加","537":" Le Baron","539":"毒蛇","543":"300 M","551":"交火","554":"300 C","16542":"型号"},}

\n
\n

我显示的原始数据JSON.striginfy:

\n

在此输入图像描述

\n

我的代码:

\n

组件.ts

\n
vehicleModels;\ndataIsReady = false;\n\n constructor(\n    private vehicleService: VehicleService,\n  ) { }\n\n ngOnInit(): void {\n    this.getModels();\n}\n\n public getModels() {\n    this.vehicleService.getBrandsModels().subscribe(({ …
Run Code Online (Sandbox Code Playgroud)

typescript angular angular-httpclient

2
推荐指数
1
解决办法
2838
查看次数

带有 HttpParams 的 HttpClient POST

我正在尝试 POST 到一个端点,该端点需要将参数作为查询字符串参数传递,而不是通过 POST 正文传递。

const params = new HttpParams()
  .set('param1', '1')
  .set('param2', '2');

const url = environment.apiUrl + 'Service/Endpoint';

return this
  .httpClient
  .post<ServiceResponse>(url, { params })
  .pipe(map(res => res.httpStatusCodeSuccess));
Run Code Online (Sandbox Code Playgroud)

这将返回 404,因为调用不包含任何查询字符串参数。我通过查看网络调用验证了这一点。

如果我正在使用但不针对 POST 端点,那么相同的代码确实可以针对 GET 请求对我起作用。.get().post()

我缺少什么?

typescript angular angular-httpclient

2
推荐指数
1
解决办法
7166
查看次数

为Angular 4中的每个Http请求创建全局身份验证标头

当我从api得到一些东西时,我想让授权标题不要一次又一次地声明它.

每当我需要从api获取数据时,我需要附加授权标头.我目前在Angular 4中使用HTTPCLIENT.我的代码:

auth.service.ts

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import 'rxjs/add/operator/map';
import { AppSettings } from '../app.constants';


@Injectable()
export class AuthService {
  private loggedIn = false;

  constructor(private httpClient: HttpClient) {
  }

  loginUser(email: string, password: string) {  
    const headers = new HttpHeaders() 
    .set('Content-Type', 'application/json');

    return this.httpClient
    .post(
       GLOBAL_URL.LOGIN_URL + '/auth/login', 
       JSON.stringify({ email, password }), 
       { headers: headers }
    )
    .map(
        (response: any) => {
         localStorage.setItem('auth_token', response.token);
          this.loggedIn = true;
          return response;
        });
   } …
Run Code Online (Sandbox Code Playgroud)

angular-http angular-http-interceptors angular angular-httpclient

1
推荐指数
1
解决办法
1474
查看次数

如何使用 HttpClient 在 Angular 4.3 上使用对象为 HTTP 请求创建 HttpParams

我有完全 angular 版本 4.3.2,由于依赖关系我无法更新。所以现在我坚持这个版本。我有一个带有动态参数的对象(里面可以有其他键和值):

let query = {
    param1: 1,
    param2: 'a'
}
Run Code Online (Sandbox Code Playgroud)

我想做类似的事情:

params = new HttpParams();
params = params.append(query);
return this.httpClient.get(this.config.apiUrl + '/items', {
            params: params,
            headers: headers
        });
Run Code Online (Sandbox Code Playgroud)

但没有这样的 params.append(query) 方法。所以我需要遍历查询键并将它们一一添加到参数中。有没有更简单的解决方案?

编辑1:

根据这个答案,这可以从 angular 5.0.0-beta.6 (2017-09-03) 开始完成,但对我来说不是解决方案。 /sf/answers/3242253031/

angular angular-httpclient

1
推荐指数
2
解决办法
5693
查看次数

为什么 Angular 没有为 HttpClient.get(...) 选择正确的重载?

我正在尝试将一些 HttpClient 调用(.get(...) 和 .post(...))抽象到 BaseService 类中,因为如果我的服务没有,我必须复制标头和凭据等代码从基类继承。

在这样做时,出于某种原因,我的代码没有选择 get 上的通用重载。

以下方法调用成功选择了正确的 HttpClient.get(...) 重载:

在此处输入图片说明

但是,以下是选择不同的重载,我不知道如何解决它:

在此处输入图片说明

这是因为我错误地声明了私有选项字段吗?我在 API 文档中找不到更好/正确的声明方式,以便成功选择正确的重载。有人可以帮我让我的代码Observable<T>为 HttpClient.get(...)选择正确的(通用)重载吗?

typescript angular angular-httpclient

1
推荐指数
1
解决办法
931
查看次数

如何通过Angular 5传递标头数据?

这在Angular 4中有效。要使其在Angle 5中正常工作,我需要进行哪些更改?

 getGreeting(): Observable<string> {
    let headers = new Headers({ 'Authorization': 'Bearer ' + this.authenticationService.token });

  //cant find requestoptions
  let options = new RequestOptions({ headers: headers });

    return this.http.
        get(Constant.ApiRoot + Constant.GreetingService, options).
        map((response: Response) => response.text());
}
Run Code Online (Sandbox Code Playgroud)

http-headers angular angular-httpclient

1
推荐指数
1
解决办法
6309
查看次数

Angular:将Http的RequestOptions与HttpClient一起使用

我正从Http迁移到HttpClient, 我习惯将一些标头添加到我的http请求中,如下所示:

import { RequestOptions, Request, RequestMethod, Headers } from '@angular/http';


this.pass = btoa(cuid + ': ');
this.pass = "Basic " + this.pass;
this.header = new Headers();
this.header.set("Authorization", this.pass);
let options = new RequestOptions({
  headers: this.header
});

return this.http.post(myServiceUrl, {}, options)
Run Code Online (Sandbox Code Playgroud)

现在,当迁移到httpClient时,我已经尝试过:

import {HttpClient, HttpHeaders} from '@angular/common/http';

    const header = new HttpHeaders();
    const pass = 'Basic ' + btoa(cuid + ': ');
    header.set('Authorization', pass);
    const options =  ({
      headers: header
    });
    return this.httpClient.post(myServiceUrl, {}, options); …
Run Code Online (Sandbox Code Playgroud)

typescript angular-http angular angular-httpclient

1
推荐指数
1
解决办法
6714
查看次数

httpClient GET返回类型

如果你看一下getData()方法,它会说this.http.get<Post>.是<Post>指定返回类型,检查响应类型或转换返回的内容

interface Post {
      title: string;
      body: string;
    };

    // ...

    constructor(private http: HttpClient) {}

    getData() {
      this.http.get<Post>(this.url).subscribe(res => {
        this.postTitle = res.title;
      });
    }
Run Code Online (Sandbox Code Playgroud)

angular angular-httpclient

1
推荐指数
1
解决办法
1830
查看次数

Angular 6 无法在 HttpClient 错误消息中读取八位字节流:“解析...

我想使用 angular 6 HttpClient (@angular/common/http) 向服务器发出非 json 请求以获取 Octet-stream 。下面是我的代码。

getFile(file: any) {
    let headers: new HttpHeaders({
        'Content-Type':  'application/octet-stream',
        'Accept':'application/octet-stream',
        'Authorization': 'Bearer ' + data.token
    })

    return this.http.get<any>(this.baseUrl + '/getfile/'+file, headers);
}
Run Code Online (Sandbox Code Playgroud)

但这给了我 JSON 解析错误。

"HttpErrorResponse", message: "Http failure during paring for..... ERROR {...} ? error: {...} ?? error: SyntaxError: "JSON.parse: JSON 数据第 1 行第 1 列的意外字符"

将其读取为非 json 的方法是什么?

typescript angular angular-httpclient

1
推荐指数
1
解决办法
6832
查看次数

RxJ中依赖于链的可观察变量

链接一系列HttpClient调用的“最佳实践”是什么(假设当前调用取决于先前调用的结果)?以下解决方案是有效的,但显然不建议这样做。每个get返回一个Observable。在解决方案(RxJs中的较新方法)中首选使用“管道”运算符。

ngOnInit() {
  this.firstService.get().subscribe((first) => {
    this.secondService.get().subscribe(second => {
      this.thirdService.get().subscribe(third => {
        ... possibly more nested calls ...
      })
    })
  })
}
Run Code Online (Sandbox Code Playgroud)

rxjs angular angular-httpclient

1
推荐指数
1
解决办法
470
查看次数