Angular
Below you will find two ways to implement the Final Space API in Angular, one with the same Angular tools and the other with Axios. And never miss 🍪 in your cupboard.
- Angular
- Axios
You can see this live example here on CodeSandbox.
Code
// app.component.ts
import {Component} from '@angular/core';
import {HttpClient} from '@angular/common/http';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Final Space API with Angular';
url = 'https://finalspaceapi.com/api/v0/character?limit=5';
items = [];
constructor(private http: HttpClient) {
this.http.get(this.url).toPromise().then(data => {
console.log(`>>> data => `, data);
for (const key in data){
if (data.hasOwnProperty(key)){
this.items.push(data[key]);
}
}
});
}
}
// app.component.html
<h1>
{{title}}
</h1>
<div class="cont-cards">
<div *ngFor="let item of items" class="card">
<div class="card shadow--tl">
<div class="card__image">
<img
height="300px"
src="{{item.img_url}}"
alt="{{item.name}}"
/>
</div>
<div class="card__body">
<h3>{{item.name}}</h3>
<small>{{item.status}}</small>
</div>
</div>
</div>
</div>
/* app.component.css*/
.cont-cards{
display: flex;
flex-wrap: wrap;
padding-left: 0;
}
.card {
margin: 20px;
justify-content: space-around;
border-radius: 8px;
overflow: hidden;
display: flex;
flex-direction: column;
}
.shadow--tl {
box-shadow: 0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1) !important;
}
.card__body, .card__footer, .card__header {
padding: 15px;
}
You can see this live example here on CodeSandbox.
Remember to add the Axios dependency to your project and install it.
Code
// app.component.ts
import {Component} from '@angular/core';
import axios from 'axios';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Final Space API with Angular';
url = 'https://finalspaceapi.com/api/v0/character?limit=5';
items = [];
constructor() {
const listCharacter = async () => {
try {
const res = await axios.get(this.url);
console.log(`>>> res => `, res);
if (res.status === 200) {
console.log(`>>> res.data => `, res.data);
for (const key in res.data){
if (res.data.hasOwnProperty(key)){
console.log('>>> res.data[key] => ', res.data[key]);
this.items.push(res.data[key]);
}
}
}
} catch (err) {
console.error(err);
}
};
listCharacter();
}
}
// app.component.html
<h1>
{{title}}
</h1>
<div class="cont-cards">
<div *ngFor="let item of items" class="card">
<div class="card shadow--tl">
<div class="card__image">
<img
height="300px"
src="{{item.img_url}}"
alt="{{item.name}}"
/>
</div>
<div class="card__body">
<h3>{{item.name}}</h3>
<small>{{item.status}}</small>
</div>
</div>
</div>
</div>
/* app.component.css*/
.cont-cards{
display: flex;
flex-wrap: wrap;
padding-left: 0;
}
.card {
margin: 20px;
justify-content: space-around;
border-radius: 8px;
overflow: hidden;
display: flex;
flex-direction: column;
}
.shadow--tl {
box-shadow: 0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1) !important;
}
.card__body, .card__footer, .card__header {
padding: 15px;
}