【问题标题】:Trying to pull values with parameters in angular尝试使用角度参数提取值
【发布时间】:2020-02-27 15:34:49
【问题描述】:

我正在尝试将数据从“http://169.38.82.132:94/GetFarmerInfo”传递到“http://localhost:4200/”。在这个网址“http://169.38.82.132:94/GetFarmerInfo”中,我试图将参数作为“授权和实例名称”传递,所以我的配置文件是

{
  "/api": {
    "target": "http://169.38.82.132:94",
    "secure": false,
    "Authorization": "bearer uRf0e8upueR4qTh_HSjzF9KiVxuXN8qK4UqHZez4LdX7DYZOsee4h0Fq1PupKGTFEIzbjq9gjiaVOtPeoayIh212nDyHOEilH2chHeXz4pXzAb8YLC4aJZ0WAEOmq0werPUeaS5c5frXo_P3iwXFtTezCxsYRkNnrXoLOfkHJsxRGW91m19EqzQgqcY5q6jQUQRZeXB9KYpI6THLLnED7ZQDNJZgTjdcuKCb-Gmb1XHD_L_V_BDlbuaEcjH3Qx52f2wOsmtyWGGQEjRMfOFtpO3KJFFmpEIVH0WxsRl5L-eg7S21i_tuT1rDQMdapXiS",
    "InstanceName":"ORISSA",
    "pathRewrite": {
      "/": ""
    }
  },
  "logLevel": "debug"

}

我的服务文件是

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class PeopleService {

  constructor(private http:HttpClient) { }

  fetchPeople(): Observable<Object>{

    return this.http.get('/GetFarmerInfo');

  };

}

在运行 npm start 后,我​​得到的响应为“GET http://localhost:4200/GetFarmerInfo 404 (Not Found)”。有没有其他的传参方式。

【问题讨论】:

    标签: angular api postman angular-cli


    【解决方案1】:

    将您的获取人员功能更改为。

    fetchPeople(): Observable<Object>{
    
        return this.http.get('http://169.38.82.132:94/GetFarmerInfo');
    
      };
    
    

    您必须提供 API 的确切 URL。 http://169.38.82.132:94/GetFarmerInfo 在你的 HTTP 函数中。

    添加标题

    let headers = new HttpHeaders({
        'Authorization': 'bearer uRf0e8upueR4qTh_HSjzF9KiVxuXN8qK4UqHZez4LdX7DYZOsee4h0Fq1PupKGTFEIzbjq9gjiaVOtPeoayIh212nDyHOEilH2chHeXz4pXzAb8YLC4aJZ0WAEOmq0werPUeaS5c5frXo_P3iwXFtTezCxsYRkNnrXoLOfkHJsxRGW91m19EqzQgqcY5q6jQUQRZeXB9KYpI6THLLnED7ZQDNJZgTjdcuKCb-Gmb1XHD_L_V_BDlbuaEcjH3Qx52f2wOsmtyWGGQEjRMfOFtpO3KJFFmpEIVH0WxsRl5L-eg7S21i_tuT1rDQMdapXiS',
        'InstanceName': 'ORISSA'
    });
    

    然后在你的函数中传递标题。

    fetchPeople(): Observable<Object>{
    
        return this.http.get('http://169.38.82.132:94/GetFarmerInfo', { headers: this.headers});
    
      };
    

    我建议您对所有 http 请求使用 HTTP Interceptors

    试试这个代码

    import { Injectable } from '@angular/core';
    import { HttpClient, HttpHeaders } from '@angular/common/http';
    
    @Injectable({ providedIn: 'root' })
    export class PeopleService {
      constructor(private http: HttpClient) { }
       headers = new HttpHeaders({ 'Authorization': 'bearer uRf0e8upueR4qTh....', 'InstanceName': 'ORISSA' });
      fetchPeople() { return this.http.get('http://169.38.82.132:94/GetFarmerInfo', { headers: this.headers }); };
    }
    

    【讨论】:

    • 只是因为您在 HTTP 请求中传递了授权标头。
    • 您的标头现在通过了,肯定有问题。在您的令牌中或从后端。
    • 这意味着代码工作正常,我需要检查后端...
    • 是的,也可以通过邮递员尝试您的 API 以确定问题出在哪里。
    • 是的,在邮递员中它工作正常,我得到了带有标题的 json 格式的结果,然后是 json 值。例如,我在邮递员中收到这种格式的回复---`{“FarmerDetails”:[{“FPO_Name”:“MAULI MAA MAIZE MANDI PRODUCER COMPANY LIMITED”,“FarmerCode”:“ABHIM000003628/NaRaDe”,“FarmerName” : "Abhimanyu", },我猜标题 ""FarmerDetails":" 会导致问题,如果我们省略此标题并仅加载 json 值,它将正常工作,对吗?
    猜你喜欢
    • 2021-01-05
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 2021-07-12
    • 2015-03-12
    • 1970-01-01
    相关资源
    最近更新 更多