-
angular http 통신 code refactoringFrontEnd 2019. 8. 3. 18:06
안녕하세요 전 포스트에서는 angular http 통신을 알아봤는데요.
간단하게 알아보느라 거기에는 한 파일에 여러 코드를 작성했습니다.
따라서 이번 글에서는 리팩토링을 하려고 합니다.
1. http 통신하는 서비스
2. video 모델
이런식으로 분리하겠습니다.
서비스를 만듭니다.
ng g s restService
import { Injectable } from '@angular/core'; import {HttpClient} from '@angular/common/http'; @Injectable({ providedIn: 'root' }) export class RestServiceService { baserUrl = 'http://localhost:8081'; constructor(private httpClient: HttpClient) { } getVideoList() { return this.httpClient.get(this.baserUrl + '/videos'); } }
위와 같이 통신만을 위한 서비스를 만들었습니다. 이러면 각 컴퍼넌트에서 httpClient 사용할 필요없이 이 서비스만 사용하면 되겠죠 :)
모델을 만듭니다.
export interface VideoSample { id: string, url: string, thumnailUrl: string, title: string }
위와 같이 모델을 만들면 모델이 변경될때마다 이 파일만 변경하면 되니까 훨씬 관리하기 쉽겠죠
만든 코드들을 바탕으로 컴퍼넌트 수정하면 됩니다.
import {Component, OnInit} from '@angular/core'; import {RestServiceService} from '../rest-service.service'; import {VideoSample} from '../model/videoSample'; @Component({ selector: 'app-video-list', templateUrl: './video-list.component.html', styleUrls: ['./video-list.component.css'] }) export class VideoListComponent implements OnInit { private videos: VideoSample[] = []; constructor(private restService: RestServiceService) { this.restService.getVideoList().subscribe((res: VideoSample[]) => { this.videos = res; }); } ngOnInit() { } }
위와 같이 서비스를 사용하고, 함수 하나면 끝입니다! 훨씬 깔끔해졌네요
'FrontEnd' 카테고리의 다른 글
angular 구글로 로그인 구현 (0) 2019.08.18 angular http 통신하기 (0) 2019.08.03 Mac 에서 AngularJS 세팅하기 (0) 2019.07.14