# data[].attributes.body
https://www.youtube.com/watch?v=uI_UP0pgsDE
https://www.youtube.com/watch?v=4LdTe90dqVE

# data[].attributes.body
Code-kwaliteit en software-onderhoudbaarheid zijn belangrijk voor startups: niet alleen om zelf controle te houden over software tijdens snelle groei , maar ook om klaar te zijn voor eventuele nieuwe investeerders of verkoop van het bedrijf.

Onderhoudbaarheid is belangrijk. Dit blijkt bijvoorbeeld uit heel veel voorbeelden van bedrijven die in problemen komen door software, zoals de luchthaven van Los Angeles

Goede kwaliteit begint doordat een team gezamenlijk eigenaarschap neemt

Vervolgens is het een kwestie van keuzes maken, standaarden afspreken, meten en reageren

Belangrijke automatisch te meten eigenschappen zijn volume, aantal technologiën, duplicatie en complexiteit. Deze metingen moet je continu doen tijdens de ontwikkeling.

https://softwarezaken.nl/wp-content/uploads/2014/05/20140521-write-maintainable-software-reduced.pdf

# data[].attributes.body
Wat is een API?

API staat voor Application Programming Interface. Wat voor een leek eigenlijk net zo verklarend is als de afkorting zelf… Heel simpel gezegd, is een API niets anders dan een ingang tot het systeem voor andere systemen. Als twee systemen met elkaar moeten communiceren, gebruikt het systeem een API om het andere systeem aan te spreken.

Een API is volledig flexibel te ontwikkelen. Dat betekent dat er praktisch geen limieten zitten aan hoe open je de deur wilt zetten. Een voorbeeld van een API is bijvoorbeeld de mogelijkheid om in Windows iets op het clipboard te plaatsen vanuit je eigen geschreven applicaties.

Remote API’s: de webservices

Als twee systemen via het internet het met elkaar moeten ‘spreken’, gebeurt dit vaak via een webservice. Webservices zijn API’s op afstand. Meestal kan deze API worden aangevraagd via een specifieke URL die dan een XML of JSON formaat terug geeft. Een voorbeeld van een webservice is http://xml.buienradar.nl/. Via de link vind je een XML beschrijving van het weer in Nederland. Je kunt op basis hiervan dus een applicatie ontwikkelen die het weer uitleest via deze API en het grafisch weergeeft in je eigen applicatie.

Verschil tussen SOAP en REST API’s

Standaarden in webservices zijn er in alle soorten en maten, maar tegenwoordig zijn de meest gebruikte soorten, SOAP en REST koppelingen.

SOAP API

SOAP is een koppeling, waarin je strak vastlegt hoe je koppeling eruit ziet. Dat geeft structuur en controle. Nadeel hiervan is dat de koppeling zwaarder is dan REST koppeling. Je stelt een soort contract op over hoe de koppeling gebruikt moet worden. Als je een SOAP koppeling wilt uitlezen dan kan dat technisch gezien best een uitdaging zijn. Gelukkig zijn er wel veel goede hulptools.

REST API

Een REST koppeling is een stuk lichter, omdat je daar geen "contract" voor gebruikt. Nadeel van een REST koppeling is dat sommige complexe koppelingen daardoor ingewikkelder zijn om te ontwikkelen dan bij SOAP. Er is immers minder structuur.

# data[].attributes.body
Representational state transfer (REST) or RESTful web services are one way of providing interoperability between computer systems on the internet. REST-compliant web services allow requesting systems to access and manipulate textual representations of web resources using a uniform and predefined set of stateless operations. Other forms of web service exist, which expose their own arbitrary sets of operations such as via WSDL and SOAP.[1] 'Web resources' were first defined on the World Wide Web as documents or files identified by their URLs, but today they have a much more generic and abstract definition encompassing every 'thing' or entity that can be identified, named, addressed or handled, in any way whatsoever, in the web. In a REST web service, requests made to a resource's URI will elicit a response that may be in XML, HTML, JSON or some other defined format. The response may confirm that some alteration has been made to the stored resource, and it may provide hypertext links to other related resources or collections of resources. Using HTTP, as is most common, the kind of operations available include those predefined by the HTTP verbs GET, POST, PUT, DELETE and so on. By making use of a stateless protocol and standard operations REST systems aim for fast performance, reliability, and the ability to grow, by using reusable components that can be managed and updated without affecting the system as a whole, even while it is running.

The term representational state transfer was introduced and defined in 2000 by Roy Fielding in his doctoral dissertation.[2][3] Fielding used REST to design HTTP 1.1 and Uniform Resource Identifiers (URI).[4][5][6] The term is intended to evoke an image of how a well-designed web application behaves: It is a network of web resources (a virtual state-machine) where the user progresses through the application by selecting links, such as /user/tom, and operations such as GET or DELETE (state transitions), resulting in the next resource (representing the next state of the application) being transferred to the user for their use.

# data[].attributes.body
Hoofdvraag
Hoe kunnen we met behulp AJAX en API’s eenvoudig informatie aanvullen met zo min mogelijk API-calls en een zo groot mogelijk gebruiksgemak?

Deelvragen

1. Wat is AJAX?

2. Wat zijn API’s?

3. Welke API’s gaan we gebruiken en op welke plaats?

4. Hoe gebruik je API’s zo efficiënt mogelijk?

5. Hoe zorgen we ervoor dat er zo min mogelijk API-calls plaats vinden?

6. Hoe maken we het gebruiksgemak zo eenvoudig mogelijk?

7. Hoe kunnen we errors in verband met informatie voorkomen?

# data[].attributes.body
- Javascript is een programmeertaal
- Ajax is een manier hoe je bestaande programmeertalen kunt gebruiken

# data[].attributes.body
http://nordicapis.com/api-discovery-11-ways-to-find-apis/

# data[].attributes.body
http://www.w3schools.com/xml/
Het is wel belangrijk om te weten waar XML eerst voor gebruikt werd (vervangen door JSON)

# data[].attributes.body
http://www.w3schools.com/js/js_json_intro.asp

# data[].attributes.body
http://www.w3schools.com/xml/ajax_intro.asp
http://www.w3schools.com/jquery/jquery_ajax_intro.asp

# data[].attributes.body
Informatie in formulieren automatisch ophalen en weergeven als de gebruiker gegevens invoert

# data[].attributes.body
- Google Books API
- Postcode API

# data[].attributes.body
{
  "firstName": "John",
  "lastName": "Smith",
  "isAlive": true,
  "age": 25,
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021-3100"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "office",
      "number": "646 555-4567"
    },
    {
      "type": "mobile",
      "number": "123 456-7890"
    }
  ],
  "children": [],
  "spouse": null
}

# data[].attributes.body
- Application programming interface
- Een verzameling definities waarmee een programma met andere programma's/onderdelen kan communiceren (bijv. Bibliotheken)
_________________________________
Een application programming interface (API) is een verzameling definities op basis waarvan een computerprogramma kan communiceren met een ander programma of onderdeel (meestal in de vorm van bibliotheken). Vaak vormen API's de scheiding tussen verschillende lagen van abstractie, zodat applicaties op een hoog niveau van abstractie kunnen werken en het minder abstracte werk uitbesteden aan andere programma's. Hierdoor hoeft bijvoorbeeld een tekenprogramma niet te weten hoe het de printer moet aansturen, maar roept het daarvoor een gespecialiseerd stuk software aan in een bibliotheek, via een afdruk-API.

Algemeen

Een API definieert de toegang tot de functionaliteit die er achter schuil gaat. De buitenwereld kent geen details van de functionaliteit of implementatie, maar kan dankzij de API die functionaliteit wel gebruiken. Een voordeel hiervan is dat met een API meerdere implementaties benaderbaar kunnen zijn, zolang deze maar voldoen aan de API.

Een voorbeeld van een generieke API is de WIN32-API van Windows. De onderliggende implementatie kan per machine verschillen, zonder dat de applicatie dit eigenlijk merkt: zowel Windows 98 als XP werkten met de Win32-API.

Een API kan worden beschreven in een Interface Definition Language (IDL). Dit wordt vooral gebruikt als meerdere programmeertalen van dezelfde API gebruik moeten maken of als er wordt gewerkt met een componenten-systeem, zoals COM of XPCOM.

Soms wordt als synoniem voor API de benaming bibliotheek gebruikt, maar dit is niet helemaal juist: een API vormt de toegang tot de bibliotheek. De API is daarbij de definitie van functies en andere objecten die in de bibliotheek beschikbaar zijn voor de applicatie.

Publieke website-API

Het is steeds gebruikelijker dat ook websites over een publieke open API beschikken. Deze kan dan benaderbaar zijn via een methode als SOAP, RSS of XML/RPC. Het formaat dat wordt teruggestuurd kan dan bijvoorbeeld XML of JSON zijn. Door een dergelijke API beschikbaar te stellen is het mogelijk om een mashup te maken, zoals een combinatie van de kaarten van Google Maps met de foto's van Panoramio. Dergelijke toepassingen zijn typisch voor de zogenaamde Web 2.0-gedachte. Open data worden doorgaans via een API ter beschikking gesteld.

Wanneer een website geen API aanbiedt, kan men nog trachten de data te verzamelen via web scraping.

Voorbeelden van API's

De BIOS-interface van een pc

W3C DOM

De Microsoft Win32-API

De J2EE Java 2 Enterprise Edition-API's

OpenGL

DirectX

Cocoa op Mac OS X

Google Play Services op Android

# data[].attributes.body
- Javascript Object Notation
- .json bestand

# data[].attributes.body
- Assynchrone JAVASCRIPT XML
- .js bestand
- AJAX gebruikt geen XML, maar JSON (JavaScript Object Notation).
________________________________
Asynchronous JavaScript And XML (AJAX) is een term voor het ontwerp van interactieve webpagina's waarin asynchroon gevraagde gegevens worden opgehaald van de webserver. Daardoor hoeven dergelijke pagina's niet in hun geheel ververst te worden. De term is op 18 februari 2005 door Jesse James Garrett gelanceerd en werd door grote bedrijven als Google en Amazon overgenomen.

Door gebruik te maken van XMLHttpRequest hoeft de webpagina niet opnieuw ververst te worden om nieuwe inhoud te krijgen. Google Suggest stelt bijvoorbeeld bij elke toetsaanslag een nieuwe reeks zoektermen voor zonder dat men de pagina hoeft te herladen. Zo'n pagina is te vergelijken met een applicatie die in de browser draait.

Ajax is een manier om interactieve webapplicaties te ontwikkelen door een combinatie van de volgende technieken te gebruiken:

XHTML en CSS voor de presentatie volgens de standaarden van het W3C.

Het Document Object Model voor het dynamisch tonen van informatie en voor interactie.

XML en XSLT voor de opslag, aanpassing en transport van gegevens. In veel gevallen wordt in plaats van XML JSON (JavaScript Object Notation), gewone tekst of een ander formaat gebruikt.

Het XMLHttpRequest object voor asynchrone communicatie met de back-end server.

JavaScript om alles aan elkaar te binden.

De technieken waaruit ajax is samengesteld bestaan al langer dan de term ajax zelf. Ajax als zodanig werd vooral goed mogelijk met de komst van het XMLHttpRequest-object (als eerste ingevoerd door Microsoft in Internet Explorer 5) en de mogelijkheid om vanuit JavaScript het HTML-DOM-model te benaderen (W3C-aanbeveling van 1998).

Het principe dat een pagina niet ververst hoeft te worden is al ouder. Dit kon bijvoorbeeld al met behulp van een hidden frame.