Hashnode API + Angular
¿Quieres incorporar tus artículos de Hashnode en tu aplicación Angular? ¡Utiliza el API de Hashnode! Aquí te enseño como.
Hola, aqui te enseño paso a paso lo que debes hacer para incorporar tus publicaciones de Hashnode en tu aplicación de Angular. Cabe destacar que debes tener conocimientos básicos del framework y el uso de APIs.
Hashnode API Playground
Si no tienes familiaridad con GraphQL, te recomiendo que pruebes la api-playground que ofrece Hashnode y te familiarices con ella, con los queries disponibles y las respuestas de esta.
query {
#Query to get all the posts an specific user has
#You specify which attributes you want to get
user(username: "svidea") {
publication {
posts(page: 0) {
title
brief
slug
coverImage
}
}
}
#Query to get the posts from your feed
storiesFeed(type: FEATURED, page: 0){
title
brief
slug
}
}
Recuerda que tienes acceso a los documentos para conocer que campos y a qué queries puedes acceder.
Trae (fetch) tus posts
Pasos:
Component.html: En mi caso utilicé filas y columnas para mostrar la información con un poco de css y bootstrap. Si planeas utilizar tablas u otra forma de mostrar tu inforomación es el mismo procedimiento utilizando el *ngFor para obtener los objetos del arreglo.
Utilicé un botón de "Leer más" que me redirige al web de hashnode con el post que quiero leer.
<div class="col-md-4 service-box" *ngFor="let post of posts"> <img src="{{post.coverImage}}" style="width:600px; height: 200px;" alt="image" class="img-responsive" /> <h3>{{post.title}}</h3> <div class="h-10"></div> <p style="color: grey;">{{post.brief}}</p> <a class="btn btn-warning" href="https://svidea.hashnode.dev/{{post.slug}}" target="_blank" role="button">Read more</a> </div>
Component.ts: Crea una constante con el query que deseas obtener (recuerda haberlo probado en el api playground para no cometer errores en la patición).
/* Usalo antes del @Component({...}) * Recuerda cambiar el "svidea" por el nombre de usuario * del que quieras obtener los posts. */ const QUERY_HASNODE = ` query GetUserArticles($page: Int!) { user(username: "svidea") { publication { posts(page: $page) { title brief slug coverImage } } } } `;
Component.ts: Crea tu función para traer los datos.
async getPosts(query:any, variables={}) { const data = await fetch('https://api.hashnode.com/', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ query, variables }) }); return data.json(); }
Component.ts: Llama tu función en el lugar donde lo necesitas. En mi caso quiero mostrar la información al cargar el componente, por ese motivo lo llamo en el ngOnInit().
/*Esta variable es la que utilizamos en el *ngFor * del component.htmlm */ posts: any; ngOnInit(){ this.getPosts(QUERY_HASNODE, { page: 0 }) .then(result => { this.posts = result.data.user.publication.posts; }); }
Browser: Corre tu app y disfruta de la magia jaja.
Info Adicional
Hashnode API token - Auth
Si, algunos queries requieren autenticación. Puedes tener tu PAT (Token de Acceso Personal) desde el "developers settings". Si no has generado nunca tu token, presiona el botón "Generate New Token".
Para el ejemplo de este post no fue necesario el uso del PAT, pero algunos queries pueden ser más complejos, y que éste sea necesario.
Conclusiones
Con el API de Hashnode puedes:
CRUD
Obtener las respuestas a tus posts, los me gusta y muchas cosas más.
Este es un ejemplo básico, pero como siempre puedes crear cosas enormes conociendo el manejo del api con el framework que utilizas.
Frase del dia: "Los pasitos de tortuga también son pasitos, no te rindas".