我正在尝试测试API调用。我可以通过POSTMAN使它正常工作。当我尝试编写一个简单的Angular应用程序以获取结果时,出现了错误。
从查看错误开始,似乎是将localhost附加到实际域上,或者将localhost保留下来,但也保留了参数。为什么第一个错误和第二个错误中的URL形成不同?为什么我会从应用程序中收到404错误,但该网址在POSTMAN中有效?
为此应用程序运行ng serve时出现以下错误
后端返回了代码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)
)
}
}
答案 0 :(得分:1)
您需要将协议添加到网址的开头,即
public API_URL: string = 'http://subdomain.domain.com/api';
否则,HttpClient会将url视为相对URL。