Migrerte HTTP‑API‑et fra Fiber til Huma v2 — 649 stier og 760 operasjoner — og nådde og holdt 100 % samsvar mellom rutene serveren registrerer og OpenAPI‑beskrivelsen den publiserer.
Arbeidet utført: 2025
760 API‑operasjoner flyttet, og beskrivelsen holdt korrekt
Situasjon. API‑et ble opprinnelig bygget på Fiber, med forespørselsvalidering skrevet for hånd, endepunkt for endepunkt. Det går fint så lenge det finnes en håndfull endepunkter. Det slutter å gå fint etter hvert som API‑flaten vokser: den håndskrevne valideringen blir en vedvarende vedlikeholdsbyrde, og små inkonsekvenser sniker seg inn fordi kontrollene i hvert endepunkt er et lite unikum. Og en samlet beskrivelse av hvordan API‑et så ut, fantes ikke noe sted.
Oppgave. Målet var at valideringen skulle komme fra typene i stedet for fra håndskrevne kontroller, og en faktisk kontrakt som beskrev API‑et — uten å stoppe opp for å skrive alt om på én gang.
Handling. HTTP‑laget ble flyttet over på Huma v2, som ligger oppå Fiber, slik at det eksisterende kjøremiljøet ble beholdt. Hvert endepunkt får egne struct‑typer for inndata og utdata, og Huma genererer forespørselsvalideringen og responsmodelleringen fra disse typene. En OpenAPI‑beskrivelse følger med på kjøpet, slik at dokumentasjonen følger koden i stedet for å forfalle i en wiki. Alt nytt ble skrevet mot Huma, og de eksisterende rutene ble migrert over, med nøyaktig to endepunkter igjen på ren Fiber — WebSocket‑endepunktene, der man faktisk vil ha selve socketen og forespørsel/svar‑modellen til Huma ikke passer. Det har vokst til 649 stier med 760 operasjoner, og en kontroll i CI som sammenligner rutene serveren faktisk registrerer, med dem OpenAPI‑beskrivelsen oppgir. Pariteten er 100 %, og den holder seg der fordi en rute som ikke er beskrevet, får bygget til å feile.
Resultat. Nye endepunkter får validering og oppdatert dokumentasjon uten at noen må gjøre ekstra arbeid for det, og en hel klasse feil i forespørselshåndteringen — typen «å, vi glemte å sjekke det feltet her» — forsvant. Med 760 operasjoner er beskrivelsen den eneste praktiske måten noen leser API‑et på, så garantien for at den er fullstendig, betyr mer enn den gjorde ved femti. Den typede kontrakten gjorde API‑et både tryggere å endre og enklere å overlevere til andre, fordi typene viser hva et endepunkt forventer.
Les videre: Bygde laget for betaling og tilgangsrettigheter — Stripe sammen med kjøp i appen hos Apple og Google — som styrer tilgangen til katalogen, søket og eksporten gjennom en tilgangsmodell på 11 tabeller som kontrolleres på serveren. Eller ta en titt på hele porteføljen.
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.