Webbserverprogrammering 1 · område 8
Projekt 3 – Driftsatt applikation med API-funktion
Din applikation från Projekt 1 ska lämna din dator. Den ska gå att nå på en riktig adress med HTTPS, med databasen migrerad på servern och inga hemligheter i koden. Den ska dessutom hämta data från ett externt API, och ha ett eget API som svarar med JSON.
- 20 april Etapp 1 före passet, etapp 2 efter Driftklar på din dator – och sedan driftsatt, med länken delad i klassen.
- 27 april Etapp 3: API:erna Det externa och ditt eget, i drift.
- 28 april Etapp 4: redovisning Tre minuter, på din adress.
- 2 maj Deadline kl 23:59 Adressen och repots adress lämnas i itslearning.
Driftsättningen dokumenteras så att någon annan kan göra om den. En applikation som bara du kan få upp på en server är inte driftsatt – den är uppsatt en gång.
Området är kort, och det ligger före slutprojektet med avsikt: ingen ska driftsätta för första gången kvällen före sista inlämningen.
1. Uppdraget
Du börjar inte om. Du tar med dig ditt projekt från område 7 – med roller, lösenorden i user-secrets och sidorna skyddade – och får fyra saker till:
- Guiden, som tar Filmarkivet hela vägen i 21 steg, med all kod och en översättningstabell. Den är uppdelad efter lektionerna.
- Referensprojektet Filmarkivet – driftklart, med Wikipedia-rutan, det egna API:et och elva tester.
- Lektionerna 57–59, en genomgång per del av guiden.
- Arbetspasset 60, med handledning.
2. Tidsplanen
| Datum | Pass | Vad ska vara klart |
|---|---|---|
| ons 14/4 | 57 | Uppgiften delas ut. Konto i Azure |
| tis 20/4 | 58 | Etapp 1 före passet: driftklar på din dator. Etapp 2 efter: driftsatt, och länken delad i klassen |
| ons 21/4 | 59 | Genomgång: JSON och API:er |
| tis 27/4 | 60 | Etapp 3: det externa API:et och ditt eget, i drift |
| ons 28/4 | 61 | Etapp 4: redovisning, tre minuter |
| sön 2/5 | – | Deadline kl 23:59: dokumentationen och sista rättningarna |
Tisdag 20/4 är passet då alla driftsätter. Kommer du dit utan att ha prövat driften på din egen dator – etapp 1 – går passet åt till att leta efter fel som hade tagit fem minuter hemma.
3. Så är uppgiften uppdelad
Fyra etapper. Varje etapp har ett datum, en kontroll du gör själv, och de krav som hör till den – på alla tre nivåerna.
| Nivå | Vad som skiljer den |
|---|---|
| E | Applikationen är driftsatt och fungerar, och det går att göra om efter din beskrivning |
| C | Du har prövat det som kan gå fel – innan det gick fel – och kan redovisa hur |
| A | Du ser gränserna för din egen lösning, och går längre än guiden där det spelar roll |
C-kraven gäller utöver E-kraven, och A-kraven utöver C-kraven – i alla etapper.
Kryssen sparas i din webbläsare, så du kan bocka av allteftersom.
4. Etapp 1 – Driftklar på din dator
Klar före passet tisdag 20/4 · pass 57 · guidens steg 1–6
Applikationen ska gå att köra som servern kommer att köra den: publicerad, i Production, med inställningarna utifrån.
Guidens steg 6, med ditt projekt. Det publicerade programmet startar i Production, med en databasmapp som inte finns, och:
- terminalen säger att migrationerna körts
- din admin kan logga in, med lösenordet från en miljövariabel
- sidan har sin CSS
Etapp 1 · krav för E
Etapp 1 · krav för C — utöver E
Etappen har inget A-krav. Den är förberedelsen – det som bedöms på A kommer i etapp 2 och 3.
5. Etapp 2 – Driftsatt
Klar efter passet tisdag 20/4 · pass 58 · guidens steg 7–12
Applikationen på Azure App Service, med HTTPS, och länken delad i klassen.
Guidens steg 11, med din adress:
- hänglåset, och
http://skickas vidare tillhttps:// - dina poster från frödatan visas
- din admin kan logga in
- utloggad hamnar du på inloggningen när du skriver en skyddad adress
Etapp 2 · krav för E
Etapp 2 · krav för C — utöver E
Etapp 2 · krav för A — utöver C
6. Etapp 3 – API:erna
Klar tisdag 27/4 · pass 59 och 60 · guidens steg 13–19
En sida som hämtar och visar data från ett externt API. Ett eget API som svarar med JSON. Båda i drift.
Välj det externa API:et så att det passar din domän. Wikipedia fungerar för nästan allt; ett annat nyckelfritt API går lika bra. Kräver det en nyckel är den en hemlighet, som lösenorden.
I drift, på din adress:
- sidan visar datan från det externa API:et
- ditt API svarar med JSON på listan och på en post
- ett id som inte finns ger 404 – som JSON, inte som en sida
Etapp 3 · krav för E
Etapp 3 · krav för C — utöver E
Etapp 3 · krav för A — utöver C
7. Etapp 4 – Redovisning och leverans
Redovisning onsdag 28/4, pass 61 · deadline söndag 2/5 kl 23:59 · guidens steg 20–21
Redovisningen. Tre minuter, på din adress – inte på din dator:
- Adressen, och hänglåset
- Logga in, och ändra något
- Sidan med det externa API:et
- Ditt API i webbläsaren, och ett id som inte finns
- En sak som gick fel, och hur du hittade felet
DRIFT.md i repots rot är driftsättningen steg för steg. Den ska
gå att följa för någon som aldrig sett ditt projekt, med ett eget Azure-konto.
Namnen på inställningarna står där – värdena gör det inte. Rubrikerna att
utgå från. Blocket går att kopiera – det är en mall, inte kod att öva på:
# Driftsättning – <din applikation> Adress: https://<ditt namn>.azurewebsites.net ## Det här behövs ## Bygga och packa ## Skapa webbappen i Azure ## Inställningarna | Namn | Vad den styr | |---|---| ## Ladda upp ## Kontrollera att det fungerar ## När något går fel ## Hemligheter
Be en klasskamrat läsa DRIFT.md och säga vilket steg som är oklart.
Rätta det.
Inlämningen
- Kontrollera etapp 2:s fyra punkter på din adress – inte på din dator.
git grepefter dina lösenord och efter ordetpassword. Ingen träff.- Läs igenom
DRIFT.mdochREADME.mden sista gång. git add .,git commit -m "…",git push- Öppna repot på github.com.
DRIFT.mdska finnas där, och ingen zip och ingenpublicera-mapp. - Lämna både adressen och repots adress i itslearning.
Etapp 4 · krav för E
Etapp 4 · krav för C — utöver E
Etapp 4 · krav för A — utöver C
8. Så bedöms den
Projekt 3 har inget prov. Den publicerade applikationen och redovisningen är examinationen, och innehållet kommer tillbaka i slutprovet.
| Kriterium | Vad det betyder här |
|---|---|
| Driftsättning | På E är applikationen driftsatt och fungerar. På C har du prövat den innan och kan redovisa felen. På A ser du gränserna för din lösning. |
| Samspelet mellan klient och server | Statuskoder, JSON och vad som händer när en annan server inte svarar. |
| Säkerhet | HTTPS, och inga hemligheter i repot – nu eller i historiken. |
| Dokumentation av utvecklingsprocess och färdig produkt | DRIFT.md: kan någon annan göra om det? |
Jag öppnar din adress och klonar repot. Fyra saker väger tyngst:
- Att den svarar. Svarar inte adressen vid deadline finns inget att bedöma i etapp 2 och 3. Gratisnivån somnar efter en stund utan trafik – det är inte ett fel, den vaknar. Men den ska vakna.
- Att det inte finns hemligheter i repot. Jag söker efter lösenord i koden och i historiken. Ett lösenord som används i drift och står i repot är ett underkänt E-krav.
- Att sidan tål att API:et inte svarar. På C prövar jag det genom att läsa hur du prövat det.
- Att
DRIFT.mdgår att följa. Jag läser den som om jag skulle göra om det. Ett steg som är självklart för dig och saknas är det som saknas.
9. Vanliga misstag
Det här är det som gör att projektet underkänns i onödan.
| Misstag | Vad som händer | Undvik det så här |
|---|---|---|
| Driften prövas först i Azure | Passet 20/4 går åt till fel som syns på fem minuter lokalt | Guidens steg 6, före passet |
| Zippen innehåller mappen, inte innehållet | Azure hittar inget program och visar sin väntsida | tar … -C ..\publicera *. Öppna zippen och kontrollera |
publicera-mappen eller zippen i repot | 20 MB byggfiler i git, och nästa publish bygger in dem | Publicera till ..\publicera, utanför projektmappen |
Databasen utanför D:\home | Datan är borta efter nästa publicering | Data Source=D:\home\data\… |
| Kolon i inställningens namn | Inställningen läses inte, och användaren skapas inte | Dubbla understreck |
| Samma lösenord som i Projekt 1 | Det finns i din git-historik, och är därmed känt | Nya lösenord i drift. git log -S |
API-nyckeln i appsettings.json | Den ligger i repot | user-secrets lokalt, App Service-inställning i drift |
| Ingen tidsgräns på klienten | Sidan väntar i 100 sekunder när API:et inte svarar | klient.Timeout. Guidens steg 16 |
new HttpClient() i sidan | Anslutningar som inte stängs, och ett API-anrop i presentationslagret | AddHttpClient och en klient bakom ett gränssnitt |
| Entiteten rakt ut i API:et | Allt på entiteten blir offentligt, också det du lägger till senare | Ett eget svarsobjekt |
| 404 från API:et som en HTML-sida | Results.NotFound() görs om till din inte-hittad-sida | Results.Problem. Guidens steg 15 |
DRIFT.md skriven sista kvällen, ur minnet | Stegen stämmer inte, och ingen annan hinner prova den | Skriv medan du driftsätter. Låt någon följa den |
Lösenordet till den driftsatta appen i README.md | Hemligheten ligger i repot | Lämna det till mig i itslearning |