Dar de alta un servico en verticales
Este es un ejemplo de cómo dar de alta un servicio nuevo para todas las verticales
ficheros que hay que tocar o crear
Directoryinterfaces
Directoryapi
Directoryshared
- experts.ts interface para tipar los datos
- verticals.ts Se da de alta la funcion del fichero que has creado arriba Ej:getExperts
Directoryservices
Directoryshared
- experts.ts Aqui es dónde se va a hacer la logica de la petición a la API
Directoryconstants
Directoryverticals
- hospitals.ts En cada vertical hay que exportar la funcion para poder usarla
- Oncology.ts En cada vertical hay que exportar la funcion para poder usarla
- traumatology.ts En cada vertical hay que exportar la funcion para poder usarla
Ejemplo para llamar a un servicio
export const getExpertsBySlug = async (lang: LanguageCode, slug: string) => { const { find } = useStrapi(); const { data: response } = (await find) < Expert > ("experts", { locale: lang, filters: { slug }, fields: ["id", "name", "cv", "slug", "order", "vertical"], populate: { imageExpert: { fields: ["id", "url", "alternativeText"], }, multiContents: { on: { "contents.products": { populate: { products: { populate: { product_image: { fields: ["id", "url", "alternativeText"] }, price: { populate: "*" }, university_image: { fields: ["id", "url", "alternativeText", "mime"], }, }, }, }, }, "contents.pdf": { populate: { file: { fields: ["id", "url", "name", "mime", "alternativeText"], }, cover: { fields: ["id", "url"] }, }, }, "contents.video": { populate: { video: { fields: ["id", "url", "name", "mime", "alternativeText"], }, cover: { fields: ["id", "url"] }, }, }, }, }, }, });
return response[0];};¿Qué hacer si necesito pasar mas parámetros?
Necesitamos tocar el fichero types/services.ts ahi es dónde estan dadas de alta las interfaces que van a usar los servicios y los parametros que van a recibir. En estos momentos hay uno que recibe el lang y otra para recibir el lang y un string
export type FunctionService<T> = ( lang: LanguageCode) => Promise<{ response: T | T[] }>;
export type ParamsService<T> = ( lang: LanguageCode, param: string) => Promise<T | null>;Para utilizar en el front
<script setup lang="ts">import type { Expert } from '@/interfaces/api/shared/experts'
// Obtener los datos de los expertosconst experts = await useServices<Expert[]>('experts')</script>
<template> {{ experts }}</template>