Gå til hovedinnhold

Opp- og nedlasting av filer

info

Se også tilsvarende dokument for GraphQL-konsumenter.

Her beskriver vi i korte trekk flyten en klient må gjøre for å laste opp eller ned en fil. I dag gjør vi dette på flere forskjellige måter avhengig av forventet bruk og størrelse på filer.

base64-enkodet data i GraphQL

I de enkleste tilfellene vil filer kunne lastes opp og ned som base64-enkodet data.

Eksponering av signerte URL'er til klient

I noen tilfeller vil filopplasting og -nedlasting følge en flyt der klienten må be om signerte URL'er. Denne flyten følger mer eller mindre denne skissen:

Skisse-for-flyten

Opplasting

1. Forespørsel om opplastings-URL

Klienten sender en forespørsel til GraphQL-API'et for å få en signert opplastings-URL for en spesifikk fil. Forespørselen inneholder blant annet:

  • Filnavn
  • Checksum
  • Content-Type
  • Content-Length

Når forespørselen er riktig vil API'et svare med en signert URL som kan brukes for opplastingen. Responsen vil også gi nødvendige signerte headere som må brukes videre. Denne URL'en er typisk bare gyldig i 10 minutter.

2. Klienten laster opp fil med PUT

Klienten kan nå laste opp filen direkte mot den signerte URL'en med HTTP PUT. Objektlageret vil bare godta opplasting dersom checksum stemmer og headerne er korrekte og samsvarer med signaturen.

3. Klienten sender bekreftelses-forespørsel til API'et

Etter at filen er opplastet må klienten sende en ny forespørsel til API'et for å verifisere at filen er riktig opplastet og registrert. Til denne forespørselen må man sende med nøkkel som API'et har gitt i steg 1.

Nedlasting

1. Forespørsel om nedlastings-URL

Klienten sender en forespørsel til GraphQL-API'et for å få en signert nedlastings-URL for en spesifikk fil. Når forespørselen er riktig vil API'et svare med en signert URL som kan brukes for nedlasting. Responsen vil også gi nødvendige signerte headere som må brukes videre. Denne URL'en er typisk bare gyldig i 10 minutter.

2. Klienten henter filen direkte med GET

Klienten kan nå laste ned filen direkte med URL'en.