of rest and beans

25
Of REST and Beans Door Thimo Jansen

Upload: thimo-jansen

Post on 15-Jan-2015

2.653 views

Category:

Technology


0 download

DESCRIPTION

Mijn presentatie over REST en Beans in een IBM Domino XPages omgeving, van het XPages & Beer evenement op 12 december 2012.

TRANSCRIPT

Page 1: Of REST and Beans

Of REST and BeansDoor Thimo Jansen

Page 2: Of REST and Beans

Introductie

* Thimo Jansen

* IBM Domino web developer

* http://www.thimojansenit.nl

Page 3: Of REST and Beans

Agenda

* REST

* JSON

* Architectuur

* Demo

* Code

Page 4: Of REST and Beans

REST

Page 5: Of REST and Beans

REST // Definitie

Representational State Transfer

A set of recommended architectural constraints in order for a system to be described as RESTful

Door Roy Fielding, ook HTTP 1.0 en 1.1

Page 6: Of REST and Beans

REST // Constraints

* Client - Server

* Stateless

* Cacheable

* Layered system

* Code on demand

* Uniform interface

Page 7: Of REST and Beans

REST // Communicatie

Data uitwisseling

Client doet weergave

Server doet opslag

Page 8: Of REST and Beans

REST // Communicatie

Via HTTP

* GET - Ophalen

* POST - Aanmaken

* PUT - Vervangen

* DELETE - Verwijderen

Lijkt op CRUD

Page 9: Of REST and Beans

JSON

Page 10: Of REST and Beans

JSON // Definitie

JavaScript Object Notation

* lightweight text-data interchange

* taal onafhankelijk

* "self-describing", easy to understand

Page 11: Of REST and Beans

JSON // Voorbeeld

Object:

{

"firstName":"John",

"lastName":"Doe"

}

Page 12: Of REST and Beans

JSON // Voorbeeld

Array:

[

100, 200, 300

]

Page 13: Of REST and Beans

JSON // Voorbeeld

Array met twee objecten:

[

{"firstName":"John", "lastName":"Doe"},

{"firstName":"Hello", "lastName":"World"}

]

Page 14: Of REST and Beans

JSON // Voorbeeld

Object met arrays en objecten:

{

"event":"XPages & Beer",

"location":"Houten",

"speakers" : [

{"firstName":"Tom", "lastName":"Steenbergen"},

{"firstName":"Thimo", "lastName":"Jansen"},

{"firstName":"Erik", "lastName":"van der Arend"}

]

}

(Syntax: http://www.json.org/, JSON Validator: http://jsonlint.com/)

Page 15: Of REST and Beans

JSON // Conversie

Javascript -> JSON

XPages: toJson(myObject);

Browser: JSON.stringify(myObject);

Page 16: Of REST and Beans

JSON // Conversie

JSON -> Javascript

var myJSON = '{"firstName":"John", "lastName":"Doe"}';

XPages: fromJson(myJSON);

Browser: JSON.parse(myJSON);

Page 17: Of REST and Beans

JSON // Conversie

Test of iets JSON is

XPages: isJson('{<some JSON string>}');

Page 18: Of REST and Beans

JSON vs REST

JSON != Hypermedia

JSON != REST

Ja, en?

http://norestforjson.blogspot.nl/2012/08/json-is-not-restful.htmlhttp://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

Page 19: Of REST and Beans

Architectuur

Page 20: Of REST and Beans

Architectuur // HTML

Browser

Web server

Request GET/POST

Response HTML

Application logic (SSJS, Beans)

Page 21: Of REST and Beans

Architectuur // REST

Browser

Web server

Request GET/POST

Response HTML

Application logic (SSJS, Beans)

AJAX Request GET/POST/PUT/DELETE

Response JSON

Page 22: Of REST and Beans

Architectuur // REST

Browser

Web server

Request GET/POST

Response HTML

Application logic

AJAX Request GET/POST/PUT/DELETE

Response JSON

Web server

Application logic

Page 23: Of REST and Beans

Demo

Page 24: Of REST and Beans

Code