Angular에서 세션 스토리지에 JSON 데이터를 저장하는 방법
Wenhao Wang
Dev Intern · Leapcell

Key Takeaways
- JSON 데이터는 세션 스토리지에 저장하기 전에 문자열화해야 합니다.
- 전용 Angular 서비스는 코드 재사용과 구성을 향상시킵니다.
- 보안 위험으로 인해 민감한 데이터 저장을 피하십시오.
세션 스토리지는 세션 중에 사용자 브라우저에 데이터를 일시적으로 저장하는 강력한 도구입니다. Angular 애플리케이션에서 세션 스토리지를 효과적으로 관리하면 페이지를 다시 로드할 때 상태를 유지하여 사용자 경험을 향상시킬 수 있습니다. 이 가이드에서는 Angular 컨텍스트 내에서 세션 스토리지에 JSON 데이터를 저장하고 검색하는 방법을 안내합니다.([Stack Overflow][1])
세션 스토리지 이해하기
세션 스토리지는 웹 스토리지 API의 일부로, 웹 브라우저에 키-값 쌍을 저장할 수 있습니다. 데이터를 무기한 유지하는 로컬 스토리지와 달리 세션 스토리지는 페이지 세션 동안만 데이터를 유지합니다. 브라우저 탭이 닫히면 데이터가 지워집니다.([Stack Abuse][2], [JavaScript in Plain English][3])
세션 스토리지에 JSON 데이터 저장하기
세션 스토리지는 문자열만 저장할 수 있으므로 저장하기 전에 JSON 데이터를 직렬화해야 합니다. Angular 컴포넌트에서 수행하는 방법은 다음과 같습니다.([Medium][4])
import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-example', template: `<p>Session Storage Example</p>` }) export class ExampleComponent implements OnInit { ngOnInit() { const user = { name: 'John Doe', email: 'john.doe@example.com' }; // Serialize and store the JSON object sessionStorage.setItem('user', JSON.stringify(user)); } }
이 예에서 user
객체는 세션 스토리지에 저장되기 전에 JSON.stringify()
를 사용하여 JSON 문자열로 변환됩니다.([Stack Abuse][2])
세션 스토리지에서 JSON 데이터 검색하기
세션 스토리지에서 JSON 데이터를 검색하고 역직렬화하려면:
const userData = sessionStorage.getItem('user'); if (userData) { const user = JSON.parse(userData); console.log(user.name); // Outputs: John Doe }
이 코드는 세션 스토리지에서 문자열화된 JSON을 가져와 JSON.parse()
를 사용하여 JavaScript 객체로 다시 파싱합니다.([Stack Abuse][2])
Angular에서 세션 스토리지 서비스 만들기
더 나은 코드 구성 및 재사용성을 위해 세션 스토리지 작업을 처리하는 전용 서비스를 만드는 것을 고려하십시오.([Stack Overflow][5])
import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class SessionStorageService { setItem(key: string, value: any): void { try { const serializedValue = JSON.stringify(value); sessionStorage.setItem(key, serializedValue); } catch (error) { console.error('Error saving to session storage', error); } } getItem<T>(key: string): T | null { try { const item = sessionStorage.getItem(key); return item ? JSON.parse(item) as T : null; } catch (error) { console.error('Error reading from session storage', error); return null; } } removeItem(key: string): void { sessionStorage.removeItem(key); } clear(): void { sessionStorage.clear(); } }
이 서비스는 세션 스토리지에서 항목을 설정, 가져오기, 제거 및 지우는 메서드를 제공하며 직렬화 및 역직렬화를 내부적으로 처리합니다.
세션 스토리지 서비스 사용하기
컴포넌트에 SessionStorageService
를 주입하여 세션 스토리지를 관리합니다.
import { Component, OnInit } from '@angular/core'; import { SessionStorageService } from './session-storage.service'; @Component({ selector: 'app-user', template: `<p>User Component</p>` }) export class UserComponent implements OnInit { constructor(private sessionStorageService: SessionStorageService) {} ngOnInit() { const user = { name: 'Jane Smith', email: 'jane.smith@example.com' }; this.sessionStorageService.setItem('user', user); const storedUser = this.sessionStorageService.getItem<{ name: string; email: string }>('user'); if (storedUser) { console.log(storedUser.name); // Outputs: Jane Smith } } }
이 접근 방식은 더 깔끔한 코드를 장려하고 관심사를 분리하여 애플리케이션을 더 유지 관리하기 쉽게 만듭니다.
모범 사례
- 오류 처리: JSON을 파싱할 때 잠재적인 오류를 정상적으로 처리하려면 항상 try-catch 블록을 포함하십시오.
- 데이터 유효성 검사: 예기치 않은 동작을 방지하기 위해 세션 스토리지에서 검색된 데이터를 사용하기 전에 유효성을 검사하십시오.
- 보안 고려 사항: 브라우저 개발자 도구를 통해 액세스할 수 있으므로 세션 스토리지에 민감한 정보를 저장하지 마십시오.
- 서비스 추상화: 코드 재사용 및 유지 관리성을 높이기 위해 세션 스토리지 로직을 서비스 내에 캡슐화하십시오.
FAQs
JSON.stringify()
를 사용하여 객체를 문자열로 변환한 다음 sessionStorage.setItem()
을 사용합니다.
컴포넌트 전반에 걸쳐 깔끔하고 재사용 가능하며 유지 관리 가능한 코드를 촉진합니다.
아니요, 브라우저 도구를 통해 액세스할 수 있으므로 기밀 정보를 저장하지 마십시오.
저희는 백엔드 프로젝트 호스팅에 가장 적합한 선택인 Leapcell입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무제한 프로젝트를 무료로 배포
- 사용량에 대해서만 지불하십시오. 요청도 없고 요금도 없습니다.
최고의 비용 효율성
- 유휴 요금 없이 사용량에 따라 지불하십시오.
- 예: $25는 평균 응답 시간 60ms에서 694만 개의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
손쉬운 확장성 및 고성능
- 손쉽게 높은 동시성을 처리하기 위한 자동 확장.
- 운영 오버헤드가 없습니다. 빌드에만 집중하십시오.
설명서에서 자세히 알아보십시오!
X에서 팔로우하세요: @LeapcellHQ