Bygg en webtjeneste uten rammeverk
Ruter er funksjoner, nc serve kjører dem, og kapabilitetene holder tjenesten i kort snor — alt fra standardbiblioteket.
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å
- Nytt nettsted for språketnorscode.no handler nå om programmeringsspråket, med dokumentasjon, eksempler og nedlastinger.
- Hvorfor kjøretiden sier neiEn kort forklaring av kapabilitetsmodellen, og hvorfor den er slått på fra første stund.
- Kompilatoren bygger seg selvNorscode er selvhostende: verktøykjeden er skrevet i språket den kompilerer.