Feedback: Oppgave 6: Prosjekt Del C

by ADMIN 36 views

Implementering av REST API for Smarthuset

Vi ser at dere har implementert de fleste av de nødvendige endepunktene i REST API-et for smarthuset. Dette er en viktig del av prosjektet, og vi er glad for å se at dere har tatt i bruk en strukturert og organisert tilgang til koden. I api.py har dere benyttet FastAPI sin modell med HTTPException for å gi tydelige feilmeldinger når et element ikke finnes. Dette er en god praksis, og det viser at dere har tenkt på hvordan feilmeldinger skal håndteres i applikasjonen.

Koden i api.py er organisert og håndterer blant annet forespørsler til både etasjer, rom og enheter, samt sensor- og aktuatorfunksjonalitet. Det er også positivt at dere har tatt i bruk asynkrone funksjoner der det er relevant (f.eks. POST- og PUT-endepunktene) og at dere verifiserer input for sensor-målinger. Dette viser at dere har tenkt på hvordan applikasjonen skal håndtere data og hvordan den skal kommunisere med andre komponenter.

Gjenbruk av eksisterende logikk og strukturering av JSON-kontrakter

Det er også positivt at dere gjenbruker eksisterende logikk fra smarthouse-klassen, og at dere implementerer sjekk for felt som mangler i JSON-data i stedet for å få uventede feilmeldinger. Dette viser at dere har tenkt på hvordan applikasjonen skal håndtere data og hvordan den skal kommunisere med andre komponenter.

I tillegg viser domain.py en god forståelse for arvehierarkier, med separate klasser for Sensor, Actuator og ActuatorWithSensor. Dette viser at dere har tenkt på hvordan applikasjonen skal strukturere data og hvordan den skal kommunisere med andre komponenter.

Forbedringsmuligheter

Noen punkter dere kan vurdere videre:

Bruk av Pydantic for å definere skjemadefinisjoner

I stedet for å eksponere objektets dict direkte kan dere tenke på å bruke et bibliotek som Pydantic for å definere skjemadefinisjoner. Dette kan gi bedre kontroll over JSON-strukturen og eventuelt validere data automatisk. Pydantic er et populært bibliotek for å definere skjemadefinisjoner og validere data, og det kan være en god mulighet å bruke det i applikasjonen.

Bruk av indeks eller annen datastruktur for å optimere søk

I enkelte tilfeller er logikken for å hente spesifikke objekter skrevet med en lineær søk (f.eks. bruk av next i get_specific_room). Det er ikke et problem for små datasett, men med større volum bør dere vurdere om en indeks eller en annen datastruktur er hensiktsmessig. En indeks eller en annen datastruktur kan hjelpe å optimere søk og forbedre presten av applikasjonen.

Dokumentering av API-spesifikasjonen

Det kan være lurt å samle og dokumentere API-spesifikasjonen (inn- og utdata) enda tydeligere, slik at både utviklere og eventuelle frontend-utviklere enkelt forstår kontraktene. Dette kan hjelpe å forbedre kommunikasjonen mellom utviklere og andre komponenter i applikasjonen.

Bruk av parameteriserte spørringer for å unngå SQL-injections

I persistence.py er SQL-spørringene bygd opp med strengkonkatenasjon, og det kan være tryggere å bruke parameteriserte spørringer for å unngå SQL-injections om applikasjonen skaleres eller modifiseres. Parameteriserte spørringer kan hjelpe å forbedre sikkerheten og unngå SQL-injections.

Samlet sett

Samlet sett har dere en gjennomarbeidet løsning der de kritiske komponentene er på plass, men det finnes rom for forbedringer med hensyn til datahåndtering og strukturering av JSON-kontrakter. Vi er glad for å se at dere har tatt i bruk en strukturert og organisert tilgang til koden, og vi håper at dere vil ta i betraktning forbedringsmulighetene vi har nevnt ovenfor.

Dere kan bare lukke dette "issue" som løst når dere har lest gjenomm den :wink:

Spørsmål og Svar

Vi har mottatt flere spørsmål om Oppgave 6: Prosjekt Del C, og vi har samlet noen av dem her. Hvis du har flere spørsmål, kan du alltid kontakte oss.

Q: Hva er målet med Oppgave 6: Prosjekt Del C?

A: Målet med Oppgave 6: Prosjekt Del C er å implementere en REST API for smarthuset, som inkluderer endepunkter for å håndtere etasjer, rom, enheter, sensorer og aktuatorer.

Q: Hva er noen av de viktigste funksjonene i Oppgave 6: Prosjekt Del C?

A: Noen av de viktigste funksjonene i Oppgave 6: Prosjekt Del C inkluderer:

  • Implementering av REST API for smarthuset
  • Endepunkter for å håndtere etasjer, rom, enheter, sensorer og aktuatorer
  • Asynkrone funksjoner for å håndtere forespørsler
  • Verifisering av input for sensor-målinger
  • Gjenbruk av eksisterende logikk fra smarthouse-klassen

Q: Hva er noen av de største utfordringene i Oppgave 6: Prosjekt Del C?

A: Noen av de største utfordringene i Oppgave 6: Prosjekt Del C inkluderer:

  • Implementering av REST API for smarthuset
  • Håndtering av komplekse datastrukturer
  • Sikkerhet og validering av input
  • Optimalisering av presten av applikasjonen

Q: Hva er noen av de viktigste prinsippene i Oppgave 6: Prosjekt Del C?

A: Noen av de viktigste prinsippene i Oppgave 6: Prosjekt Del C inkluderer:

  • Strukturert og organisert tilgang til koden
  • Bruk av asynkrone funksjoner for å håndtere forespørsler
  • Verifisering av input for sensor-målinger
  • Gjenbruk av eksisterende logikk fra smarthouse-klassen

Q: Hva er noen av de viktigste teknologiene i Oppgave 6: Prosjekt Del C?

A: Noen av de viktigste teknologiene i Oppgave 6: Prosjekt Del C inkluderer:

  • FastAPI
  • Pydantic
  • SQL
  • JSON

Q: Hva er noen av de viktigste funksjonalitetene i Oppgave 6: Prosjekt Del C?

A: Noen av de viktigste funksjonalitetene i Oppgave 6: Prosjekt Del C inkluderer:

  • Håndtering av etasjer, rom og enheter
  • Håndtering av sensorer og aktuatorer
  • Håndtering av forespørsler og respons
  • Sikkerhet og validering av input

Tillegg

Vi håper at dette Q&A-artikkelen har hjulpet deg å forstå Oppgave 6: Prosj Del C bedre. Hvis du har flere spørsmål, kan du alltid kontakte oss. Vi er her for å hjelpe!