Hopp til innhold

Designet en JSON‑passthrough‑arkitektur der PostgreSQL‑funksjoner returnerer komplett JSON som Go‑API‑et videresender uendret, noe som fjernet mellomliggende unmarshalling og frikoblet frontend fra skjemaendringer.

JSON rett fra databasen til nettleseren

Situasjon. Den vanlige måten data kommer fra en database til en nettleser på, er en stafett av transformasjoner. Databasen gir API‑et rader, API‑et pakker dem ut i structs, omformer dem, serialiserer dem tilbake til JSON, og først da sendes de ut. Hver eneste av disse etappene er kode du skriver, kode du tester, og ett sted til der API‑ets forståelse av dataene og databasens forståelse av dem kan gli fra hverandre.

Oppgave. Ideen var å hoppe over stafetten. Hvis databasen kunne returnere det ferdige svaret, kunne API‑et bare sende det videre, og frontenden kunne avhenge direkte av formen databasen leverer i stedet for av en kopi av den som ble vedlikeholdt for hånd i Go.

Handling. Det ble derfor bygget som en direkte videresending. PostgreSQL‑funksjonene setter sammen hele svaret som JSON — formingen er en SQL‑oppgave, gjort der dataene allerede ligger. Go‑handleren tar det imot som json.RawMessage og videresender det urørt; den bryter det aldri ned og koder det aldri om. En liten QueryJSON‑hjelper gjorde det mønsteret til minste motstands vei i stedet for noe man måtte huske å gjøre. Det som falt bort, var alt det mellomliggende maskineriet et konvensjonelt lagdelt API samler opp — DTO‑ene, mappingkoden, respons‑structene.

Resultat. Handlerkoden ble dramatisk kortere, og enda viktigere: frontenden sluttet å være koblet til Go. Endrer man hva en funksjon returnerer, flyter den nye formen rett gjennom til klienten uten at noen redigerer en eneste linje med handlerkode. Færre bevegelige deler, og en hel kategori av glidning mellom lagene finnes rett og slett ikke her.

Ett stykke av en lengre oversikt — og den ligger i sin helhet her.

Hver oppføring er skrevet på samme måte: situasjonen, oppgaven, hva vi gjorde, og hva som endret seg.

Se hele oversikten