Angular http.get在应用程序中返回404,但从POSTMAN可以

时间:2019-03-11 21:45:29

标签: angular rest localhost http-status-code-404 angular-httpclient

我正在尝试测试API调用。我可以通过POSTMAN使它正常工作。当我尝试编写一个简单的Angular应用程序以获取结果时,出现了错误。

从查看错误开始,似乎是将localhost附加到实际域上,或者将localhost保留下来,但也保留了参数。为什么第一个错误和第二个错误中的URL形成不同?为什么我会从应用程序中收到404错误,但该网址在POSTMAN中有效?

为此应用程序运行ng serve时出现以下错误

  1. 获取 http://localhost:4200/subdomain.domain.com/api/api/UserAccount/FindUser?firstName=John&lastName=Doe&dob=1/1/1981&locale=en&optionEmailForTesting= 404(未找到)

  2. 后端返回了代码404,正文为:

    Cannot
    GET
    /subdomain.domain.com/api/api/UserAccount/FindUser

我尝试了多种更改URL格式的方法,但是没有一种方法影响最终结果。

app.component.ts:

export class AppComponent implements OnInit {
  title = 'helloWorld bro';
  private apicallsService : ApiCallsService;

  constructor(acs: ApiCallsService) 
  { 
    this.apicallsService = acs;
  }

  ngOnInit() {
    this.apicallsService.FindUser().subscribe(resp => { console.log(resp); });
  }

}

apicalls.service.ts:

@Injectable()
export class ApiCallsService
{
    constructor(private http : HttpClient ) { }

    public API_URL: string = 'subdomain.domain.com/api';

    public FindUser():Observable<ResponseDTO>
    {
       // let mail = (optionEmailForTesting != undefined) ? optionEmailForTesting : "";

        let url = this.API_URL + '/api/UserAccount/FindUser';    
        const params = new HttpParams()
            .set('firstName', 'John')
            .set('lastName', 'Doe')
            .set('dob', '1/1/1981')
            .set('locale', 'en')
            .set('optionEmailForTesting', '')

        return this.http.get<ResponseDTO>(url,{params}).pipe(
        catchError(this.handleError)
        )
    }
}

1 个答案:

答案 0 :(得分:1)

您需要将协议添加到网址的开头,即

public API_URL: string = 'http://subdomain.domain.com/api';

否则,HttpClient会将url视为相对URL。