Tag: api

  • Post #28 Angular Api

    Post #28 Angular Api

    Odświeżenie wiadomości i kodu Angular. Dowiedziałem się że właśnie jest stabilna v 18 wprowadzająca dużo zmian.

    Treść zadania do Aplikacji Angular

    Job Task Używając modułu HttpModule w Angular 2+, napisz fragment kodu, który z poniższego API pobierze drugi element o statusie 'pending’. Ocenimy także jakość i wydajność Twojego rozwiązania. Link do API: API To Do

    Realizacja

    Stworzyłem nową Aplikację Angular w wersji 14 i metodę fetch wraz z filtrem wyników. Dodatkowo stworzę rozwiązanie z Service i Subscribe,

    Kod Obecnej aplikacji

    Dodany jest Bootstrap jako UI oraz Component Api wraz z routerem

    // Router
    
    import { NgModule } from '@angular/core';
    import { RouterModule, Routes } from '@angular/router';
    import { HomeComponent } from './components/home/home.component';
    import { ApiComponent } from './components/api/api.component';
    
    const routes: Routes = [
      { path: 'home', component: HomeComponent },
      { path: 'api', component: ApiComponent }
    ];
    
    @NgModule({
      imports: [RouterModule.forRoot(routes)],
      exports: [RouterModule]
    })
    export class AppRoutingModule { }
    
    // App Module
    
    import { NgModule } from '@angular/core';
    import { BrowserModule } from '@angular/platform-browser';
    import { HttpClientModule } from '@angular/common/http';
    
    import { AppRoutingModule } from './app-routing.module';
    import { AppComponent } from './app.component';
    import { HomeComponent } from './components/home/home.component';
    import { ApiComponent } from './components/api/api.component';
    import { NavComponent } from './components/nav/nav.component';
    
    @NgModule({
      declarations: [
        AppComponent,
        HomeComponent,
        ApiComponent,
        NavComponent
      ],
      imports: [
        BrowserModule,
        AppRoutingModule,
        HttpClientModule
      ],
      providers: [],
      bootstrap: [AppComponent]
    })
    export class AppModule { }
    
    // API-Components
    
    import { HttpClient } from '@angular/common/http';
    import { Component, OnInit } from '@angular/core';
    import { Observable } from 'rxjs';
    import { filter, map, tap } from 'rxjs/operators';
    
    interface Task {
      id: number;
      user_id: number;
      title: string;
      due_on: string;
      status: string;
    }
    
    @Component({
      selector: 'app-api',
      templateUrl: './api.component.html',
      styleUrls: ['./api.component.css']
    })
    export class ApiComponent implements OnInit {
    
      tasks: Task[] = [];
      secondPendingTask: Task | undefined;
    
      constructor(private http: HttpClient) { }
    
      ngOnInit(): void {
        this.getSecondPendingTask()
          .subscribe(task => {
            this.secondPendingTask = task;
          }, error => {
            console.error('Error fetching task:', error);
          });
      }
    
      getSecondPendingTask(): Observable<Task> {
        return this.http.get<Task[]>('https://gorest.co.in/public/v2/todos')
          .pipe(
            // Filter tasks with status 'pending'
            filter(tasks => tasks.length > 1 && tasks[1].status === 'pending'),
            // Map to the second pending task (if found)
            map(tasks => tasks[1]),
            // Handle the case where no second pending task exists
            tap(task => {
              if (!task) {
                console.log('No second pending task found');
              }
            })
          );
      }
    }
    
    
    
    

    Kod Html Api-component

    <h1 class="display-4">API</h1>
    <p class="lead">Api works!</p>
    
    <div class="bg-light">
      <ul class="list-unstyled">
        <li *ngIf="secondPendingTask">
          (task Id: {{ secondPendingTask.id}}) **Second Pending Task:** <span>{{ secondPendingTask.title }} </span> (status:
          {{ secondPendingTask.status }})
        </li>
        <li *ngIf="!secondPendingTask">
          No second pending task found.
        </li>
      </ul>
    </div>
    
    
    

    Krótka instrukcja krok po kroku

    1. Importuj moduł HttpClient z @angular/common/http w pliku api.component.ts.
    2. Wstrzyknij HttpClient do konstruktora komponentu.
    3. Stwórz metodę, która będzie wywoływać API za pomocą metody get() z HttpClient.
    4. Wywołaj tę metodę w cyklu życia komponentu, np. ngOnInit().
    5. Przechowaj odpowiedź z API w zmiennej w komponencie.
    6. Wyświetl dane w szablonie komponentu za pomocą dyrektywy *ngFor.

  • Post #25 Financial Planner

    Post #25 Financial Planner

    Financial Planner

    Praca nad applikacją do planowania i kontroli wydatków osobistych. Applikacja będzie oparta o model Api Express.js JSON – data JavaScrit i Ui Bootstrap.

    Dodawanie Planu wydatków

    Aplikacja będzie posiadała swego rodzaju alokacje środków na wybrane cele i możliwość dodawania nowych grup / kategorii

    Kontrola wydatków

    Wydatki będą notowane wszystkie. Będą następnie przyrównywane do określonych kategorii.

    Przechowanie danych w JSON

    Express i plik JSON będą Back-End dla wprowadzanych danych oraz na ich podstawie będą generowane GET dla wybranych danych.

    Rozwinięcie Plannera Finansowego

    Docelowa Financial Doctor będzie wspierał kontrolę i planowanie wydatków na podstawie poprzednich miesięcy. Docelowo będzie miał możliwość szybkiej reprezentacji poszczególnych sald. Kalendarz i Salda będą podpowiadały jakie były Plany i ich Realizacja.

    Planner Finansowy

    W trakcie prac nad plannerem skupiliśmy się na dodawaniu funkcji umożliwiających łatwe planowanie zakupów. Dzięki nowym możliwościom użytkownicy będą mogli wpisywać produkty, których potrzebują, a następnie automatycznie generować listę zakupów. Dodatkowo planner będzie monitorować stan zapasów i sugerować, kiedy należy dokonać kolejnych zakupów. To ułatwi codzienne zarządzanie domowymi zapasami i zaoszczędzi czas potrzebny na zbędne wizyty w sklepach.

    Nowa funkcjonalność planner będzie również zawierać opcje personalizacji zakupów. Użytkownicy będą mogli określić swoje preferencje żywieniowe, alergie czy diety specjalne, a planner będzie automatycznie eliminował niedozwolone produkty z listy zakupów. To znacząco ułatwi zakupy i pozwoli uniknąć przypadkowych zakupów, które potem trzeba będzie oddać lub wyrzucić. Dzięki temu planner stanie się nie tylko narzędziem do organizacji, ale również wsparciem w zdrowym stylu życia.

    Więcej o API

    Zachęcam do pogłębienia swojej wiedzy na temat interfejsu API poprzez odwiedzenie strony, gdzie znajdziesz szczegółowe informacje na temat API. Interfejs API, czyli Application Programming Interface, jest narzędziem umożliwiającym komunikację między różnymi aplikacjami oraz serwisami internetowymi. Dzięki API możliwa jest wymiana danych i informacji pomiędzy nimi, co ma kluczowe znaczenie w dzisiejszym świecie cyfrowym.

    Na stronie Opengateweb.com znajdziesz artykuł, który szczegółowo omawia funkcje oraz zastosowanie interfejsu API Post #22-post-api.

    Planner Fin Stylling

    Prace nad plannerem – Ui stylle, czyli interfejsem użytkownika, są kluczowym elementem projektowania każdej aplikacji mobilnej, strony internetowej czy programu komputerowego. Współczesne trendy w projektowaniu interfejsów skupiają się na prostocie, intuicyjności i estetyce, które mają zapewnić optymalne doświadczenie użytkownika podczas korzystania z danej aplikacji.

    W trakcie prac nad plannerem – Ui stylle należy brać pod uwagę potrzeby i preferencje grupy docelowej, aby stworzyć interfejs, który będzie łatwy w obsłudze i przyjemny dla oka. Ważne jest również dbanie o spójność designu, tak aby wszystkie elementy interfejsu współgrały ze sobą i tworzyły spójną całość. Projektowanie interfejsów użytkownika to proces wieloetapowy, który obejmuje analizę potrzeb użytkowników, tworzenie prototypów, testowanie interfejsu oraz ostateczne wprowadzenie zmian na podstawie opinii użytkowników. Ważne jest, aby interfejs był responsywny, czyli dostosowany do różnych urządzeń i rozdzielczości ekranów, aby każdy mógł korzystać z aplikacji bez ograniczeń.

    Dlatego prace nad plannerem – Ui stylle wymagają skupienia się na zaprojektowaniu UX/UI, tak aby zapewnić optymalne funkcjonalności i wygląd interfejsu. Warto również brać pod uwagę feedback od użytkowników, aby stale doskonalić interfejs i sprostać ich oczekiwaniom. Dzięki starannemu projektowaniu interfejsu użytkownika można stworzyć aplikację, która będzie cieszyć się popularnością i uznaniem użytkowników.

  • Post #15 Teachers App Finished

    Post #15 Teachers App Finished

    Teachers App Finished

    Aplikacja ma pełną funkcjonalność CRUD. Została dodana do repozytorium jako nowy branch – z dopiskiem finished.

    Kilka słów o logice działania

    • Gradebook: Jak działa, jeśli nie czytałeś poprzednich postów Applikacja Teacher’s Grade book jest zrobiona z API studnetów i pliku logbook.json oraz Express.js Java Script i Bootsrap.
    • CRUD: na pierwszej stronie są dodane rekordy i wyświetlone w tabeli poniżej. Jest formularz do dodawania nowego studenta Imię Ocena ( A, B etc) oraz Wiek.
    • Po dodaniu: wyświetla się potwierdzenie oraz uaktulanienie tabeli. W tabeli jest klikalna ikona „Edit-Pencil”, która pobiera wybrane dane według uuid i przenosi na stronę Edycji. Dane są do poprawienia i zatwierdzenia. Tu znajduje się także przycisk Delete.
    • Tech: Express i plik logbook.json zapisują i manipulują metodami. Dodatkowo Id jest tworzone automatycznie dzięki uuid. Zastosowałem metodę reload oraz redirect po kliknięciu Dismiss alertu z powiadomieniem.

    API i Express

    Duże objaśniejie developerskie i rozwiązania manipulacji metodami znajdują się pliku readme.MD w repozytorium Scripterix w branch „finished” Branch main był zrobiony częściowo. GitHub Repo Teacher’s -b finished Metody API jakie są stosowane w Express.JS są omawiane w Post #22 API.

    Jestem zadowolony z pierwszego samodzielnego CRUD

    Oparcie Crud na API i endpointach dla danych mniej wrażliwych lub ogólnych i tworzenie warstwy Backendowej i Front-Endowej daje dużo frajdy i jest wielościeżkowe w sensie podejścia. Można wszystko zorganizować na kilka sposobów. Creativissimo

    App Teacher’s Grade logbook rozwinięcie

    Planuje albo użyć Webpack i zrobić „bundle” aby umieścić Appkę w Portfolio lub zastosować i poznać się lepiej z Docker’em. Jeśli chcesz poznać kod aplikacji zapraszam do Repo lub Glitch.

  • Post #11 API Advanced Programming Interface

    Post #11 API Advanced Programming Interface

    API – Advanced Programming Interface

    Tworzę applikację gdzie będę zapisywał w JSON dane. Będzie to początkowo simple CRUD ale z API i na bazie frameworks Express. Będzie zabawnie aplikacja Teachers Grade logbook. Więcej w [poście #12](/posts/12-post-teachers/).

    API (Interfejs programowania aplikacji)

    API, czyli Interfejs Programowania Aplikacji, to zestaw reguł i protokołów, które pozwalają aplikacjom na komunikację ze sobą. Może to obejmować komunikację między różnymi komponentami w obrębie jednej aplikacji lub między różnymi aplikacjami działającymi na różnych platformach. API definiuje, jakie rodzaje żądań można wysyłać do systemu, jakie informacje można uzyskać oraz jak odpowiedzi są zwracane.

    Async/Await

    Json-Server

    JSON-Server to narzędzie, które pozwala szybko stworzyć lokalny serwer HTTP, który obsługuje operacje CRUD (Create, Read, Update, Delete) na danych przechowywanych w formacie JSON. Jest to przydatne narzędzie do szybkiego prototypowania aplikacji lub testowania interfejsów API. Umożliwia ono definiowanie prostych plików JSON jako bazy danych, a następnie udostępnia je poprzez prosty interfejs HTTP, pozwalając na interakcję z nimi za pomocą standardowych żądań HTTP, takich jak GET, POST, PUT i DELETE.

    Express.js

    Express.js jest minimalistycznym i elastycznym frameworkiem aplikacji internetowych dla Node.js. Jest to jedno z najpopularniejszych narzędzi do tworzenia serwerów HTTP w środowisku Node.js. Express.js zapewnia prostą i intuicyjną warstwę abstrakcji nad wbudowanym modułem HTTP w Node.js, co ułatwia tworzenie aplikacji internetowych.

    Oto kilka kluczowych cech Express.js

    Minimalizm Express.js jest minimalistycznym frameworkiem, co oznacza, że dostarcza tylko podstawowe funkcje do obsługi żądań HTTP, ale jest równocześnie elastyczny i umożliwia rozbudowę za pomocą różnych wtyczek i middleware’ów.

    Routing Express.js zapewnia proste i wydajne mechanizmy routingu, dzięki którym można definiować ścieżki URL i odpowiadające im funkcje obsługujące żądania HTTP.

    Middleware Middleware w Express.js to funkcje, które są wywoływane sekwencyjnie przez aplikację Express.js w celu przetwarzania żądań HTTP. Pozwalają one na wykonywanie różnych operacji, takich jak uwierzytelnianie, logowanie, obsługa błędów, parsowanie ciała żądania i wiele innych.

    Obsługa szablonów Express.js wspiera różne silniki szablonów, takie jak Pug (dawniej Jade), EJS, Handlebars, co ułatwia generowanie dynamicznych stron internetowych.

    Obsługa plików statycznych Możliwość obsługi plików statycznych, takich jak pliki CSS, JavaScript, obrazy, itp., dzięki czemu można dostarczać zasoby statyczne do klienta.

    Wsparcie dla middleware’ów zewnętrznych Istnieje wiele gotowych middleware’ów i wtyczek dostępnych dla Express.js, co pozwala na łatwe rozszerzanie funkcjonalności aplikacji.

    Express.js jest często wykorzystywany do tworzenia zarówno prostych serwerów API, jak i zaawansowanych aplikacji internetowych, takich jak strony internetowe, aplikacje jednostronicowe (Single Page Applications – SPA), serwisy internetowe, i wiele innych. Dzięki swojej elastyczności, wydajności i rozbudowanej społeczności, Express.js pozostaje jednym z najpopularniejszych narzędzi w ekosystemie Node.js.

    Metody HTTP

    Oto kilka podstawowych metod HTTP:

    **GET:** Służy do pobierania danych z określonego zasobu na serwerze. Przesyła zapytanie do serwera w celu pobrania danych.

    **POST:** Służy do przesyłania danych do serwera w celu utworzenia lub aktualizacji zasobu. Często wykorzystywane do przesyłania formularzy lub wysyłania danych z aplikacji.

    **PUT:** Służy do aktualizacji zasobu na serwerze. Przesyła cały zasób do serwera, który ma zostać zaktualizowany.

    **DELETE:** Służy do usuwania zasobu na serwerze. Przesyła żądanie usunięcia określonego zasobu.

    **PATCH:** Służy do częściowej aktualizacji zasobu na serwerze. Jest podobny do metody PUT, ale aktualizuje tylko określone części zasobu.

    **HEAD:** Podobne do metody GET, ale serwer zwraca tylko nagłówki odpowiedzi bez samego zasobu. Często używane do sprawdzania statusu zasobu bez konieczności pobierania go w całości.

    **OPTIONS:** Służy do pobrania informacji o dostępnych metodach HTTP na danym zasobie. Często używane do sprawdzania, jakie metody są dozwolone dla danego zasobu.

    **TRACE:** Służy do diagnostyki, przesyłając żądanie z powrotem do klienta w celu zbadania zmian, jakie zaszły w trakcie przetwarzania przez serwer.

    **CONNECT:** Używane do ustanowienia tunelu do serwera, zazwyczaj używane w przypadku tunelowania zabezpieczonych połączeń, takich jak SSL.

    To są podstawowe metody HTTP używane w komunikacji między klientem a serwerem.

    W poście następnym rozwijam przykład prostej APP [Post #12](/posts/12-post-teachers/)