저는 Angular를 처음 사용하고 있으며 모든 구성 요소에 대한 서비스를 만들었습니다. 이 서비스는 서버에서 데이터를 가져 오는 데 사용됩니다.각도로 일반 Http 서비스 만들기
내 클라이언트가 요청을 오프라인으로 저장하고 나중에 동기화하라는 메시지를 표시하지 않을 때까지 모든 것이 잘 작동했습니다.
이제 서버에 충돌하여 기존의 구성 요소가 첨부 된 서비스가 아닌 공통 서비스를 만들었습니다.
이것이 프로젝트에서 어떤 효과가 있는지 여부를 알고 싶었습니다.
이 방법이 괜찮 으면 네트워크 연결을 CommonRequestService
으로 확인하고 DB에 요청을 저장합니다.
아래 코드를 확인하고 되돌리십시오. 나는 매우 감사 할 것이다.
이전 엔지니어 현황 서비스 여기에 CommonRequestService
export class engineerStatusService {
constructor(public http: Http) {}
// Post data to the server if user update the status
post(path: string, body: Object = {}): Observable <any> {
let headers = new Headers({
'Content-Type': 'application/x-www-form-urlencoded',
'authorization': 'Bearer ' + localStorage.getItem('token')
});
let options = new RequestOptions({
headers: headers
});
let data = body;
let urlSearchParams = new URLSearchParams();
for (var key in body) {
urlSearchParams.append(key, body[key]);
}
let bodyData = urlSearchParams.toString();
return this.http.post(`${API_URL}${path}`, bodyData, options)
.map(response => response.json());
}
}
업데이트 엔지니어 현황 서비스
사용됩니다. 당신이 이미 그것을 한 이후
export class engineerStatusService {
constructor(private commonRequestService: CommonRequestService) {}
// Post data to the server if user update the status
post(path: string, body: Object = {}): Observable <Response> {
let data = body;
let urlSearchParams = new URLSearchParams();
for (var key in body) {
urlSearchParams.append(key, body[key]);
}
let bodyData = urlSearchParams.toString();
return this.commonRequestService.post(path, bodyData)
.map(response => response.json())
}
}
CommonRequestService
export class CommonRequestService {
constructor(private http: Http) {}
post(path: string, body: Object = {}): Observable <Response> {
let headers = new Headers({
'Content-Type': 'application/x-www-form-urlencoded',
'authorization': 'Bearer ' + localStorage.getItem('token')
});
let options = new RequestOptions({
headers: headers
});
return this.http.post(`${API_URL}${path}`, body, options)
}
}
엔지니어 상태의 구성 요소
updateStatus(data) {
this.engineerStatusService
.post('status', data)
.subscribe(data => {
console.log(JSON.stringify(data));
}, error => {
console.log('Error occured =>', error);
})
}
HTTP 인터셉터 링크는 서비스 작업자 링크 만 엽니 다. 중요한 것은 일단 데이터를 가져 오면 오프라인 모드에서 데이터에 대한 모든 작업을 수행 할 수 있다는 것입니다. 캐싱은 필요하지 않습니다. 요청 및 본문 데이터를 데이터베이스의 대기열에 저장하려고합니다. 나중에 네트워크를 사용할 수 있습니다. 큐에서 모든 데이터를 서버로 보낼 수 있습니다. 내 주요 질문은 그들이 변경되었는지 또는 문제가 있는지 여부에 관계없이 변경 한 내용입니다. 도와주세요! – Jassi
죄송합니다. 오래된 키보드, 그 문제를 편집했습니다. 당신이 묻는 것은 요격기로 여전히 가능합니다! 그리고 당신의 코드에 대해서, 나는 알 수 없습니다. 나는 그것이 작동 하는지를 테스트하기 위해 테스트해야합니다 ... – trichetriche
테스트 할 수 있다면 좋을 것입니다. 나는 지금만큼 재 작업을하고 싶지 않다. 이것은 Angular의 첫 번째 프로젝트입니다. 다음 프로젝트를 통해 서비스 작업자와 HTTP 인터셉터가 어떻게 작동하는지 확인할 수 있습니다. 그러나 당분간 제 코드를 확인하고 진행해야하는지 안다면 알려주십시오. – Jassi