2017-09-29 4 views
1

Angular4에서 실패한 PUT HTTP 요청을 처리하는 모범 사례 지침을 찾고 있습니다.Angular4에서 실패한 http put을 처리하는 방법

내 시나리오 : 간단한 구성 요소는 put 요청으로 API를 호출하여 레코드를 업데이트하려고 시도합니다.

예제 코드 조각 :

this.workStreamService.save(this.workStream); 

이이 코드가 workStreamService라는 서비스에 대한 메소드 호출 : :

save(workStream: WorkStream): Promise<WorkStream> { 
    const url = this.workStreamUrl + '/' + workStream.id; 
    return this.http 
    .put(url, JSON.stringify(workStream), {headers: this.headers}) 
    .toPromise() 
    .then(() => workStream) 
    .catch(this.handleError); 
} 

이 코드는이를

내 구성 요소가이 코드를 포함

대부분 복사하여 붙여 넣기하고 Angular4 튜토리얼에서 수정했지만 튜토리얼은 오류/성공을 처리 할만큼 충분히 깊이 들어가 있지 않습니다.

API는 응답 본문, 개체 또는 모든 종류의 DTO를 반환하지 않으며 HTTP 상태 코드 만 반환합니다. 성공 200, 무언가 잘못되었을 경우 500.

전달 된 workStream 개체가 OK이고 서비스가 실행 중이며 오류가 발생하지 않는 경우에는 정상적으로 작동합니다. 서비스가 실패하여 500을 반환하는 상황에서는 구성 요소에서 200 응답과 다르게 처리 할 수 ​​있기를 원합니다. (예 - 구성 요소는 "성공"메시지를 표시하거나 사용자에게 "이 통화 실패"메시지를 표시하여 다시 시도하라는 메시지를 표시합니다.)

저는 Angular4를 처음 사용 했으므로 이런 종류의 취급 사례를 찾을 수 없습니다. 도움을 주셔서 미리 감사드립니다.

답변

0

handleError 방법의 기능은 무엇입니까? 같은 put 같은

this.workStreamService.save(this.workStream) 
    .then(workstream => // Do something on success) 
    .catch(() => // Do something on error); 

각도의 HTTP 방법을 다룰 것이다 : 당신이 당신의 오류가 구성 요소에 조금씩하고 비슷한 방식으로 소비 될 수있는이 방법을 생략하거나 내부에 Promise.reject()을 다시 발생하거나 경우

당신의 코드로 - 서비스가 성공 코드를 받으면 그것은 (Observable 전체 단계를 거친 후에) 해결 된 약속으로 번역 될 것입니다. 그렇지 않으면 .catch에서 소비를위한 거절 된 약속으로 번역 될 것입니다.

+0

귀하의 질문에 도움이 되셨습니까? – UncleDave

+0

아! 친절하게 고맙다. 그렇게 설명 할 때 너무 단순 해 보인다. 그것을 할 코드를 해결할 관리 ... 나는 그것을 자동으로 반환 된 개체를 반환 실현하지 않았다 (나는 명시 적으로 그것을 시도했다). 감사합니다. –

관련 문제