Appearance
Luentomateriaali
Luento 1
- Intro
- Ohjelmistot ja työkalut
- Git & GitLab
- HTTP-protokolla
- OpenAPI & Swagger
- FastAPI & Python
- API-tehtävän aloitus
Luento 2
Luento 3
Web-ohjelmointirajapintojen suunnittelu ja testaus
- Katsotaan Insomnian tarjoamia työkaluja
- Tutustutaan Apidog palveluun, kirjautuminen mahdollista koulun tunnuksilla (Google)
- Miten OpenAPI liittyy rajapintojen suunnitteluun ja testaamiseen?
- Mihin ohjelmistokehityksen vaiheeseen rajapintasuunnittelu sijoittuu?
Luento 4
Edistyneet rajapintateknologiat - GraphQL
- GraphQL perusteet
- GraphQL vs REST
- GraphQL rajapinnan käyttö
Tuntitehtävä, tehdään javaScript client GraphQL rajapinnan hyödyntämiseen
- VS Code lisäosa, käytetään kehityspalvelimena: https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer
- Rakennetaan web-sivu jossa toteutetaan toiminnalisuus GraphQL rajapinnan käyttämiseen javaScriptilla.
- Käytettävä rajapinta: https://github.com/trevorblades/countries
- Toteuta funktio jossa haet kaikki maat, sisällytä dataan mukaan maakoodi sekä maan nimi
- Toteuta funktio jossa haet yksittäisen maan tiedot maakoodilla
- Toteuta funktio jossa haet kaikki maanosat. Listaa samalla queryllä myös kaikki maat maanosittain. Sisällytä vähintään maakoodi mukaan maakohtaiseen dataan.
Tehtävä katsotaan läpi yhdessä luennolla. Kirjaa tekemäsi asiat ja havainnot oppimispäiväkirjaan.
Linkit:
- GraphQL https://graphql.org/
- Lista eräistä GraphQL rajapinnoista: https://github.com/IvanGoncharov/graphql-apis
Luento 5
Tietoturva - autentikaatio ja autorisointi
Harjoitus luennolla:
- Kloonaa (tai forkkaa ja kloonaa) seuraava repo koneellesi ja toimi README:n ohjeiden mukaan:
https://peke.plab.fi/matias.hiltunen/fastapi-auth-example
Linkit:
https://cheatsheetseries.owasp.org/index.html
https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication
https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
https://www.kyberturvallisuuskeskus.fi/fi
Luento 6
JavaScript - web-ohjelmointirajapintojen hyödyntäminen verkkoselaimella.
- JavaScript ohjelmointielen kertaamista.
- ToDo sovelluksen kokonaisarkkitehtuuri
- Tutustutaan Reactiin
- Client tehtävän aloitus (Tehtävä 2).
Linkit:
https://stackblitz.com/?starters=frontend
Luento 7
- JavaScript ja asynkronisuus
- Node.js
- API Quizzes avataan
Luento 8
WebSocket
- WebSocket teoriaosuus
- Rakennetaan yksinkertainen Chat yhdessä luennolla hyödyntäen FastAPI:n dokumentaatiota WebSocketiin liittyen
- Kloonaa FastAPI WebSocket esimerkki-projekti koneellesi ja toimi README:n ohjeiden mukaan: https://peke.plab.fi/matias.hiltunen/fastapi-websocket-example
Tätä on mahdollista hyödyntää Client tehtävässä (tehtävä 2) soveltavana osana!
Linkit:
WebSocketista Mozillan dokumentaatiossa: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
WebSocket ei ole ainoa tapa toteuttaa reaaliaikaista/kaksisuuntaista tiedonvaihtoa serverin ja clientin välillä. LogRocketin blogista löytyy hyvä kirjoitus eri vaihtoehtojen läpikäyntiin:
https://blog.logrocket.com/websocket-tutorial-real-time-node-react/
NiceToKnow:
Luento 9
- gRPC perusteet
- Kokeillaan käytännössä luennolla
Linkkejä:
Python esimerkki: https://peke.plab.fi/matias.hiltunen/grpc-python-example
Node.js gRPC client esimerkki: https://peke.plab.fi/matias.hiltunen/grpc-node-example
https://nilsmagnus.github.io/post/proto-json-sizes/
https://grpc.io/blog/mobile-benchmarks/
https://sakshichahal53.medium.com/json-vs-protocol-buffer-simplified-dbd6b69ca528