Skip to content

Commit bee980a

Browse files
author
jesperorb
committed
Added ajax assignment
1 parent fef3b8d commit bee980a

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed

assignment_ajax.md

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# AJAX Assignment - Open APIs :satellite:
2+
3+
<img align="right" width="180" height="auto" src="http://3.bp.blogspot.com/-PTty3CfTGnA/TpZOEjTQ_WI/AAAAAAAAAeo/KeKt_D5X2xo/s1600/js.jpg" alt="JavaScript Logo">
4+
5+
De flesta applikationer och hemsidor på webben idag är dynamiska och hämtar data från olika servrar kopplade till speciella tjänster. Sättet vi kommer åt informationen är oftast via ett **API** (Application Programmable Interface). Detta brukar oftast vara ett **ReST API** som levererar `json`-data. Vi har tidigare använt t.ex. `json-server` för att skapa vårt eget API men nu ska vi hantera data via AJAX från ett API som tillhör någon annan.
6+
7+
## Uppgift :pencil:
8+
9+
Du ska skapa en applikation som hämtar data från ett eller flera öppna APIs och visar upp denna data på en `html`-sida. Vilken data du hämtar och hur den visas upp är upp till dig och baserat på vilket/vilka APIer du väljer. Exempel på vilka API:er du kan använda till uppgiften finns i listan nedan.
10+
11+
Du får använda antingen `vanillaJS` eller `jQuery` för att lösa uppgiften. Om du vill använda någon annan teknologi/bibliotek/ramverk så går nog det bra bara du kollar av med mig innan du börjar använda det. Huvudfokusen för denna uppgift ska vara att hämta och hantera information asynkront via AJAX.
12+
13+
Du får använda jQuerys `$.ajax()`-metod, `fetch` eller `XMLHttpRequest` för att hämta informationen från ett öppet API. Vilken metod för att hämta hem data är upp till er bara den hämtas via AJAX och laddas in dynamiskt.
14+
15+
Du får även använda ett `css`-ramverk som t.ex. _Bootstrap_ för att strukturera upp själva sidan.
16+
17+
**Se till att ha ett tydligt mål med vad du ska bygga innan du sätter igång. Gör upp en lista över vilken funktionalitet som ska finnas, hur det ska se ut etc. (tänk på hur ni jobbade under HTML/CSS-kursen). Lägg tid på förarbetet.**
18+
19+
20+
#### Listor på APIer att använda
21+
22+
23+
* [**Public APIs** by _toddmotto_ @ GitHub](https://github.com/toddmotto/public-apis)
24+
* [**Public APIs** by _abhishekbanthia_ @ GitHub](https://github.com/abhishekbanthia/Public-APIs)
25+
* [Programmable Web API Directory](https://www.programmableweb.com/category/all/apis)
26+
* [API-katalogen](http://apikatalogen.se/)
27+
28+
### Mål med uppgiften :dart:
29+
30+
Målet med uppgiften är att få en bättre översyn över hur AJAX och **asynkront** JavaScript fungerar. API-hantering är en stor del av frontendyrket och därför är det viktigt att ha god förståelse över hur asynkrona anrop via AJAX hanteras i JavaScript oberoende av vilken metod eller funktion man använder för att hantera anropen.
31+
32+
## Krav för G
33+
34+
##### Koden:
35+
36+
* **Hämtar data från ett eller flera öppna APIer som serverar data i form av `json`.**
37+
- **Du ska göra flera olika anrop till APIet** och **inte** bara 1 simpel `get`-request till APIet och visa upp resultatet.
38+
* **Visar upp hämtade data på ett strukturerat sätt i `html`**.
39+
* **God kodstruktur där du använder namespaces** och tydligt separerar delarna av din kod logiskt. (T.ex. använde ett _Design Pattern_ så som föregående uppgift)
40+
* Du genomför projektet självständigt och skriver all kod själv samt att du förväntas kunna berätta om all din kod och visa att du behärskar det du skrivit.
41+
* Du **uppvisar god förståelse för AJAX och asynkron kommunikation** och hur man jobbar asynkront i JavaScript.
42+
* Du **error-hanterar dina anrop** och all eventuell input från `input`-fält. Använder t.ex. `error`-function i `$.ajax()`-anrop etc.
43+
* Du använder **semantisk och tydligt strukturerad HTML5** och har en **responsiv design**. (Förslagsvis löses den responsiva delen enkelt med ett `css`-ramverk)
44+
* Din `html`, `css` och `js` är:
45+
- Fungerande
46+
- Korrekt indenterad
47+
- Väl strukturerad och lättläst
48+
- Kommenterad efter behov (t.ex. vid mer svårlästa funktioner så ska kodflödet kommenteras)
49+
* **Projektet versionshanteras både lokalt och via GitHub**
50+
51+
##### Projektet:
52+
53+
* Din kod ska finnas på __GitHub__ och ha en tydlig `README` med följande information:
54+
- ditt namn, kurs och utbildning
55+
- länk till projektet live
56+
- kort beskrivning av applikationen, dess syfte och funktionalitet.
57+
- punktlista med vilka teknologier du använt.
58+
- kort beskrivning av det API/APIer du använt samt länk till dem.
59+
- kortfattat om din arbetsprocess och vad som skulle kodmässigt kunna förbättras. Man kan t.ex. ha en "TODO"-sektion i ens `README` med saker som skulle kunna implementeras om tid fanns.
60+
* **Projektet ska kännas som en färdig produkt**
61+
62+
63+
64+
[Markdown Cheat Sheet för att skriva README](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)
65+
66+
## Krav för VG
67+
68+
* Användaren kan på något sätt styra över vilken information som hämtas, d.v.s. någon form av urval finns som exempelvis ett sökfält, kategorier eller liknande som man kan filtera innehållet via. Vid filtering ska ett nytt AJAX-anrop skickas till APIet/APIerna med sökning eller filtreringskriterierna.
69+
* Ditt gränssnitt är tydligt gentemot användaren när data laddas och när data är färdigladdat från servern. T.ex. har en loading-indikator som indikerar när information laddas in.
70+
* Uppvisar kunskap om `context` samt `scope` och hur synkrona och asynkrona funktioner exekveras i relation till `context` och `scope`.
71+
72+
## Presentation av kod :speaker:
73+
74+
Ni presenterar projektet live för läraren på sista lektionstillfället.
75+
Ett presentationsschema kommer att läggas upp på GitHub, Studentportalen och i Slacken när vi närmar oss presentationstillfället.
76+
77+
Då ska du visa hur applikationen fungerar
78+
79+
* Demo av applikationen
80+
* Visa och förklara de viktigaste delarna av din applikation
81+
* Var beredd på att få frågor på hur du har kodat
82+
83+
### Inlämning av kod
84+
85+
_Betyg_: **G/VG**
86+
87+
_Sista inlämningsdag_: **31/3** kl. **23.55**
88+
89+
_Lämnas in på studentportalen under_: **Inlämningsuppgift 2: AJAX**
90+
91+
_Lämnas in enligt följande namnmönster och följande format_:
92+
93+
`fornamn_efternamn_ajax.zip`

slides/08_async_api.pdf

398 KB
Binary file not shown.

0 commit comments

Comments
 (0)