Projekti on tehty Tietotekniikan laboratoriokurssia varten. Projektin ideana on luoda yksinkertainen REST API, joka toteuttaa CRUD toiminnallisuuksia. Projektissa piti myös olla tietokanta, jossa on vähintään kaksi toisiinsa 1:N suhteella liittyvää taulua.
Tein projektin siten, että ensin alustan tietokannan OpenF1 nimisestä APIa käyttämällä. Tietokanta saa API:sta kisat, ajajat ja tulokset. Käyttäjä voi tämän jälkeen itse lisätä uusia kisoja, muokata kisoja, poistaa kisoja tai muokata ajajien tietoja. Projektissa myönnettävästi keskityin liikaa CRUD:in Read toimintoon ja datan muotoiluun / hakemiseen, joten muut toiminnallisuudet ovat projektin edetessä lisättyjä.
- Suoritusympäristö: Node.js ja TypeScript
- Sovelluskehys: Express 5
- Tietokanta: SQLite (Prisma ORM:n kautta
better-sqlite3-adapterilla) - Tietolähde: OpenF1 API
src/
app.ts # Express-sovellus ja API-reittien määrittelyt
scripts/
fetchDrivers.ts # Hakee ja tallentaa ajajatiedot
fetchRaces.ts # Hakee ja tallentaa kisatiedot
fetchResults.ts # Hakee ja tallentaa kisatulokset
prisma/
schema.prisma # Tietokantakaavio (Driver, Race, Result -mallit)
- Node.js
- npm
npm installLuo .env-tiedosto projektin juurihakemistoon:
DATABASE_URL=file:./dev.db
PORT=3001 # Tai haluamasi porttinpx prisma migrate devHae ja tallenna kaikki tiedot ulkoisesta API:sta:
npm run syncTai aja yksittäiset hakuskriptit (ei suositella ensimmäisellä kerralla):
npm run fetch-races
npm run fetch-drivers
npm run fetch-resultsnpm run devAPI on käytettävissä osoitteessa http://localhost:3001 tai valitsemassasi portissa.
| Metodi | Reitti | Kuvaus |
|---|---|---|
GET |
/api/drivers |
Listaa kaikki ajajat. Voidaan suodattaa parametrilla ?year= |
GET |
/api/drivers/:id |
Hae ajaja tunnuksella, sisältää kisatulokset |
PUT |
/api/drivers/:id |
Päivitä ajajan tiedot |
| Metodi | Reitti | Kuvaus |
|---|---|---|
GET |
/api/races |
Listaa kaikki kisat. Voidaan suodattaa parametrilla ?year= |
GET |
/api/races/:id |
Hae kisa tunnuksella, sisältää tulokset ja ajajatiedot |
POST |
/api/races |
Luo uusi kisa |
PUT |
/api/races/:id |
Päivitä kisan tiedot |
DELETE |
/api/races/:id |
Poista kisa ja sen tulokset |
ISC