Угловой http.get возвращает 404 в приложении, но все в порядке от POSTMAN - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь проверить вызов API. Я могу заставить его работать от POSTMAN. Когда я пытаюсь написать простое приложение Angular, чтобы получить результат, я получаю ошибки.

Если посмотреть на ошибки, кажется, что они либо добавляют localhost к реальному домену, либо отключают его, но и не учитывают параметры. Почему URL-адреса формируются по-разному в первой ошибке по сравнению со второй? Почему я получаю 404 ошибки из приложения, но URL работает в POSTMAN?

Я получаю следующие ошибки при запуске ng serve для этого приложения

  1. GET 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 Ответ

1 голос
/ 12 марта 2019

Вам нужно добавить протокол в начало URL, т.е..

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

Без этого HttpClient обрабатывает URL как относительный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...