Feedback: Oppgave 6: Prosjekt Del C
Implementasjon av REST API for Smarthuset
Hei!
Vi har evaluert din implementasjon av REST API for smarthuset, og det er tydelig at du har en god forståelse av strukturen både i API-et og i domenemodellen. Du bruker type hints og strukturerer data som dictionaries for å returnere JSON, noe som er en positiv tilnærming for enkel integrasjon med FastAPI.
Styrker
- Endepunktene for å hente informasjon om huset, etasjer, rom og enheter er tydelig definert og følger kravspesifikasjonen. Dette viser at du har en god forståelse av kravene og har implementert dem på en måte som er lett å følge.
- Logikken for å hente og manipulere data knyttet til sensorer, aktuatorer og rom er implementert på en måte som gjør det lett å følge. Dette viser at du har en god forståelse av hvordan dataene skal håndteres og har implementert det på en måte som er lett å forstå.
- Klassen SmartHouse og tilhørende metoder for registrering av etasjer, rom og enheter er godt utformet og demonstrerer en forståelse av objektorientert programmering. Dette viser at du har en god forståelse av objektorientert programmering og har implementert det på en måte som er lett å følge.
- Bruken av SQLite og funksjonaliteten i SmartHouseRepository for lagring og henting av data fungerer som forventet, og du har inkludert løsninger for å håndtere SQLite-thread problem med check_same_thread=False. Dette viser at du har en god forståelse av hvordan dataene skal lagres og hentes, og har implementert det på en måte som er lett å følge.
Mulige forbedringspunkter og begrensninger
- I flere endepunkter bruker du indeksering basert på (fid - 1) eller (rid - 1) for å hente etasje og rom. Dette krever at brukeren kjenner den eksakte rekkefølgen (og at den ikke støter på feil om man sender en ugyldig verdi). Det er lurt å vurdere ekstra validering eller feilmelding dersom en indeks er utenfor gyldig område.
- For feilhåndtering returneres et enkelt dictionary med en "error" key. Det kan være en idé å utnytte FastAPIs muligheter til å returnere HTTP-feilkoder (f.eks. 404 for ikke funnet) for en bedre RESTful design.
- Noen metoder for sensorhåndtering, slik som get_latest_reading i persistence, kan drifte med antagelser om at data eksisterer. Gjerne vurder robust feilhåndtering eller logging slik at problemer blir enklere å diagnostisere.
- Testresultatene indikerer "NO TESTS EXECUT", noe som tyder på at testkonfigurasjonen eventuelt ikke kjørte som forventet. Du bør verifisere om banen til databasefilen og importene oppfyller kravene til testmiljøet slik at alle enhetstester blir kjørt.
Tips for videre læring
- Utforsk bruken av Pydantic for datamodellering i FastAPI; det kan hjelpe deg med både validering og automatisk dokumentasjon av API-endepunktene.
- Vurder å implementere mer avansert feilhåndtering i API-et, slik at du bedre utnytter FastAPIs evne til å returnere standardiserte HTTP-feilkoder.
- Sjekk om du kan skrive noen tester direkte for API-et ved å bruke FastAPIs testklient for å simulere HTTP-kall og verifisere svarene.
Alt i alt viser implementasjonen at du har en god forståelse av både de domenespesifikke utfordringene og bruk av FastAPI. Lykke til videre med prosjektet!
Vennlig hilsen,
Undervisningsteamet
Implementasjon av REST API for Smarthuset
Spørsmål og Svar
Q: Hva er målet med denne oppgaven?
A: Målet med denne oppgaven er å implementere en REST API for smarthuset som følger kravspesifikasjonen og demonstrerer en god forståelse av objektorientert programmering og bruk av FastAPI.
Q: Hva er noen av styrkene i min implementasjon?
A: Noen av styrkene i din implementasjon inkluderer:
- Endepunktene for å hente informasjon om huset, etasjer, rom og enheter er tydelig definert og følger kravspesifikasjonen.
- Logikken for å hente og manipulere data knyttet til sensorer, aktuatorer og rom er implementert på en måte som gjør det lett å følge.
- Klassen SmartHouse og tilhørende metoder for registrering av etasjer, rom og enheter er godt utformet og demonstrerer en forståelse av objektorientert programmering.
- Bruken av SQLite og funksjonaliteten i SmartHouseRepository for lagring og henting av data fungerer som forventet.
Q: Hva er noen av mulige forbedringspunkter og begrensninger i min implementasjon?
A: Noen av mulige forbedringspunkter og begrensninger i din implementasjon inkluderer:
- I flere endepunkter bruker du indeksering basert på (fid - 1) eller (rid - 1) for å hente etasje og rom. Dette krever at brukeren kjenner den eksakte rekkefølgen (og at den ikke støter på feil om man sender en ugyldig verdi).
- For feilhåndtering returneres et enkelt dictionary med en "error" key. Det kan være en idé å utnytte FastAPIs muligheter til å returnere HTTP-feilkoder (f.eks. 404 for ikke funnet) for en bedre RESTful design.
- Noen metoder for sensorhåndtering, slik som get_latest_reading i persistence, kan drifte med antagelser om at data eksisterer. Gjerne vurder robust feilhåndtering eller logging slik at problemer blir enklere å diagnostisere.
- Testresultatene indikerer "NO TESTS EXECUT", noe som tyder på at testkonfigurasjonen eventuelt ikke kjørte som forventet.
Q: Hva er noen tips for videre læring?
A: Noen tips for videre læring inkluderer:
- Utforsk bruken av Pydantic for datamodellering i FastAPI; det kan hjelpe deg med både validering og automatisk dokumentasjon av API-endepunktene.
- Vurder å implementere mer avansert feilhåndtering i API-et, slik at du bedre utnytter FastAPIs evne til å returnere standardiserte HTTP-feilkoder.
- Sjekk om du kan skrive noen tester direkte for API-et ved å bruke FastAPIs testklient for å simulere HTTP-kall og verifisere svarene.
Q: Hva er neste trinn etter denne oppgaven?
A: Neste trinn etter denne oppgaven er å implementere flere funksjoner i API-et, slik som å tilføye nye endepunkter for å håndtere sensorer og aktuatorer, og å implementere mer avansert feilhåndtering.