Wecode -기업협업 인턴 (부트캠프)/기업협업 독학, 공부

데이터를 매핑해서 redirect하는게 뭐니

JBS 12 2023. 11. 7. 14:03

데이터를 매핑해서 리디렉션(redirect)하는 것은

웹 애플리케이션에서 특정 URL로 사용자를 리디렉션하는 작업을 의미합니다.

 

일반적으로 특정 URL에 대한 요청을 받았을 때,

해당 URL과 관련된 데이터를 조회하고,

그 데이터를 기반으로 사용자를 다른 URL로 리디렉션하는 것이 필요할 수 있습니다.

 

 

예를 들어, URL 단축 서비스를 구현하는 경우,

원래 URL과 해당에 대응하는 단축 URL 간의 매핑을 유지하고,

사용자가 단축 URL을 요청했을 때, 서비스는 이를 원래 URL로 리디렉션합니다.

이 과정에서 데이터를 매핑하고 리디렉션을 수행합니다.

일반적인 절차는 다음과 같습니다:

 

  1. 데이터베이스에서 데이터 조회: 사용자의 요청 URL에 대한 데이터베이스에서 관련 정보를 조회합니다. 이 정보는 원래 URL 또는 리디렉션 대상 URL과 관련된 것일 수 있습니다.
  2. 데이터 매핑: 조회한 데이터를 사용하여 원래 URL 또는 리디렉션 대상 URL을 결정합니다.
  3. 사용자 리디렉션: 결정된 URL로 사용자를 리디렉션합니다. 이 작업은 HTTP 응답의 상태 코드를 301 (영구적 리디렉션) 또는 302 (임시 리디렉션)로 설정하여 수행할 수 있습니다.

NestJS에서 데이터 매핑 및 리디렉션을 수행하려면 다음과 같은 단계를 따를 수 있습니다:

  1. 데이터베이스에서 데이터를 조회하기 위해 해당 Entity를 사용하고, 원래 URL 또는 리디렉션 대상 URL을 얻습니다.
  2. 얻은 URL을 기반으로 사용자를 리디렉션하는 컨트롤러 작성합니다. 이 컨트롤러는 HTTP 응답을 설정하여 사용자를 리디렉션합니다.

예를 들어, 원래 URL을 리디렉션하는 NestJS 컨트롤러의 코드는 다음과 유사할 수 있습니다:

 

 

import { Controller, Get, Redirect, Param } from '@nestjs/common';
import { YourEntityService } from './your-entity.service';

@Controller()
export class RedirectController {
  constructor(private readonly entityService: YourEntityService) {}

  @Get(':shortUrl')
  @Redirect('', 301) // 301 상태 코드로 리디렉션
  async redirectToOriginalUrl(@Param('shortUrl') shortUrl: string) {
    const originalUrl = await this.entityService.findOriginalUrl(shortUrl);
    return { url: originalUrl };
  }
}

 

 

 

위 코드에서 @Redirect 데코레이터를 사용하여 리디렉션을 수행하며, :shortUrl 매개변수를 통해 사용자가 요청한 단축 URL을 받습니다. entityService를 통해 데이터베이스에서 원래 URL을 찾고, @Redirect를 사용하여 해당 URL로 사용자를 리디렉션합니다.

이것은 단순한 예제이며, 실제 애플리케이션에서는 더 많은 검증 및 에러 처리를 수행해야 합니다.