0.0.82 • Published 12 months ago

ms-redis-cliente v0.0.82

Weekly downloads
-
License
MIT
Repository
-
Last release
12 months ago

Descripcion

Paquete de Conexion para interceptar datos de respuesta y guardar la informacion en REDIS-CACHE

Instalacion

Instalacion del paquete

npm i ms-redis-cliente/redis

Configuracion

Configuracion de Paquete en el archivo app.module.ts

import { AppModuleRedisClient, DatapassInterceptor } from 'ms-redis-cliente'
@Module({
  imports: [
    AppModuleRedisClient.register(),
  ],
  controllers: [], 
  providers: [
    DatapassInterceptor
  ],
})
export class AppModule {}

Configuracion de Paquete en el archivo my.montroller.ts

import { DatapassInterceptor } from 'ms-redis-cliente'

 @Get('/my-rest-api') 
 @SetMetadata("data-cache", {key:"key-name-cache",ttl:15}) 
 @UseInterceptors(DatapassInterceptor)
 /*Configuracion de Res() obligatoria
    { passthrough: true }
 Configuracion de Res() obligatoria*/
 async myRestApi(@Res({ passthrough: true }) res) {
    try {
        /*Configuracion de respuesta obligatoria*/
        const getResponse = await this.appService.getRestApiTWo()
        return getResponse
        /*Configuracion de respuesta obligatoria*/
    } catch (error) {
        return res.status(HttpStatus.BAD_REQUEST).json(error);
    }
 }

Propiedades del decorador @SetMetadata("data-cache")

Descripcion de los campos en "data-cache"

PropiedadValorDescripcion
keyString (null)key de donde se guardara los datos guardados CAMPO OBLIGATORIO SI useKeyUrl es FALSE
ttlNumber (0)Tiempo de vida del cache almacenar
keyResponseString (null)Propiedad de respuesta de los datos del controlador
useKeyUrlBoolean (false)Si es TRUE tomara la URL del controlador como key para guardar los datos en cache
ignoreExceptionsBooleanIgnora exepciones del servidor de ms-redis
responseHttpBoolean(true)Respuesta del interceptor por HTTP declare en falso si tiene otros interceptores http o respuestas ya generadas y enviadas al cliente por http

Uso del Servicio

Se pueden utilizar el servicio

Debe realizar la configuracion de Paquete en su archivo my.service.ts

import { AppServiceRedisClient } from 'ms-redis-cliente'

@Injectable()
export class AppService {
  constructor(
    private appServiceRedisClient:AppServiceRedisClient
  ){}

  //Se utilizo Observable<AxiosResponse<any[]>> solo por fines de desarrollo para consumir un RESTAPI
  async mySetCache():Promise<Observable<AxiosResponse<any[]>>>{
    try {
        const response = await this.httpService.get(`https://pokeapi.co/api/v2/pokemon/ditto`).toPromise()
        //this.appServiceRedisClient.SetCache(key,value,ttl)
        await this.appServiceRedisClient.SetCache("key",JSON.stringify(response.data),150)
        return response.data
    } catch (error) {
        throw error
    }
  }

    async myGetCache():Promise<any>{
    try {
        //this.appServiceRedisClient.getCache(key)
        const getData = await this.appServiceRedisClient.getCache("key")
        return getData
    } catch (error) {
        throw error
    }
  }
    
  async myDeleteCache():Promise<any>{
    try {
        //this.appServiceRedisClient.DeleteCache(key)
        await this.appServiceRedisClient.DeleteCache("key")
    } catch (error) {
        throw error
    }
  }
}

Descripcion de los parametos en los servicios

PropiedadValorDescripcion
keyString (null)key identificador para realizar Guardar, Recuperar o Eliminar en redis
valueString(null)Valor almacenar en Redis
ttlNumber (0)Tiempo de vida del cache almacenar

Uso del Interceptor desde el Fronted

Se pueden utilizar las siguientes propiedades desde el frontend en el QUERY de una solicitud HTTP | Propiedad | Valor | Descripcion | | ------ | ------ | ------ | | noCache | Boolean (false) | Si el valor es TRUE ignora el cache almacenado en redis | | ttl | Number (0)| Tiempo de vida del cache a almacenar |

Configuracion en solicitud HTTP

Caso 1, Ignorar Cache:

curl --location 'https://my-rest-api.com/rest-api-two?noCache=true

Caso 2, Control de tiempo de vida del cache en segundos:

curl --location 'https://my-rest-api.com/rest-api-two?ttl=60

Recalcar que la propiedad ${TTL} del frontend tiene prioridad al ${TTL} del backend del @SetMetadata("data-cache")