Hopp til innhold
NorscodeNorscode

Bygg en webtjeneste uten rammeverk

ArtikkelAv Norscode-prosjektet

Ruter er funksjoner, nc serve kjører dem, og kapabilitetene holder tjenesten i kort snor — alt fra standardbiblioteket.

Fra forespørsel til svar GET / nc serve web.route + funksjon 200 OK

Den beste testen på om et språk holder til ekte arbeid, er om du kan bygge en fungerende webtjeneste med det uten å dra inn et rammeverk utenfra. I Norscode ligger alt du trenger i standardbiblioteket.

En rute er en funksjon

En webtjeneste i Norscode er funksjoner som svarer på forespørsler. Du merker en funksjon med en rute — for eksempel GET / — leser det du trenger fra forespørselen, og bygger et svar med en statuskode og litt innhold. Det er ikke mer seremoni enn det.

Samme verktøy kjører den

Når tjenesten er skrevet, starter du den med nc serve. Ingen egen tjener å sette opp ved siden av, ingen ekstra lag å lære. Det samme nc som sjekket og kjørte koden din, tar den nå imot trafikk.

Trygg fra første forespørsel

En webtjeneste er nettopp den typen program du vil holde i kort snor: den snakker med verden. Her kommer kapabilitetsmodellen til nytte — tjenesten når bare det du har gitt den, enten det er en mappe med data eller en bestemt vert. Skulle noe i koden prøve å gjøre mer, stopper kjøretiden det.

Nettstedet du leser dette på

Norscode.no er selv en Norscode-webtjeneste, bygget på det samme standardbiblioteket — rutene, databasen og markdown-behandlingen. Det er ikke et kunststykke; det er poenget. Verktøyet skal holde til ekte arbeid rett ut av boksen, og et nettsted som driver seg selv er en grei måte å vise det på.

Les det brukeren sender

En rute er sjelden helt statisk — den vil gjerne lese noe fra forespørselen. Det gjør du med request_*-funksjonene fra std.web, for eksempel en spørrestreng-parameter:

la navn = web.request_query_param(ctx, "navn")
hvis navn == "" { navn = "verden" }

På samme måte finnes det funksjoner for headere, cookies, kroppen i forespørselen og hvilken HTTP-metode som ble brukt. Svaret bygger du med response_builder, der du oppgir statuskode, headere og innhold.

Trygg i kraft av kjøretiden

En webtjeneste snakker med verden, og er nettopp den typen program du vil holde i kort snor. Her kommer kapabilitetene til nytte: tjenesten binder ikke en port uten net.tcp, og den når ikke disken uten at du har gitt den tilgang — avgrenset til de mappene du oppgir. Skulle en avhengighet prøve å gjøre mer, stopper kjøretiden det.

Fra én fil til drift

Når tjenesten virker lokalt, er veien til produksjon kort: samme fil, samme nc serve, på en server. Ingen egen applikasjonstjener å sette opp ved siden av. Nettstedet du leser dette på kjøres på nettopp denne måten.

Les også

Tilbake til oversikten