SlideShare a Scribd company logo
1 of 79
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
{
    "_links" : {
       "self" : { "href" : "/products/32154" },
       "profile" : { "href" : "http://example.com/schema/product" },
       "add-to-shopping-cart" : {
         "href" : "/shopping-cart/{shoppingCartId}/lines",
         "templated" : true
       }
    },
    "productId" : 32154,
    "name" : "Sungsam iClone IX",
    "brand" : "Sungsam",
    "availability" : "on stock",
    "price" : 699.95
}
Hypermedia API’s
<resource href="/products/32154">
  <link rel="profile" href="http://example.com/schema/product"/>
  <link rel="add-to-shopping-cart“
        href="/shopping-cart/{shoppingCartId}/lines“
        templated="true"/>
  <productId>32154</product>
  <name>Sungsam iClone IX</name>
  <brand>Sungsam</brand>
  <availability>on stock</availability>
  <price>699.95</price>
</resource>
Hypermedia API’s
Hypermedia API’s
{
    "_links" : {
      "self" : { "href" : "/shopping-cart/794" },
      "profile" : {
         "href" : "http://example.com/schema/shopping-cart"
      },
      "order" : { "href" : "/orders" }
    },
    "_embedded" : {
      "line" : [{
         "_links" : {
            "self" : { "href" : "/shopping-cart/794/lines/1" },
            "product" : { "href" : "/product/32154" }
         },
         "productId" : 32154,
         "description" : "Sungsam iClone IX",
         "quantity" : 1,
         "price" : 699.95
      }]
    },
    "priceTotal" : 699.95
}
Hypermedia API’s
Hypermedia API’s
Hypermedia API’s
GET / HTTP/1.1

HTTP/1.1 200 OK

{
    "_links" : {
      "self" : { "href" : "/" },
      "profile" : { "href" : "http://example.com/schema/index" },
      "orders" : { "href" : "/orders" },
      "products" : {
         "href" : "/products{?productId,name,brand}",
         "templated" : true
      },
      "shopping-carts" : { "href" : "/shopping-carts" },
    }
}
GET /products?brand=Sungsam HTTP/1.1

HTTP/1.1 200 OK

{
    "_links" : {
      [...]
      "products" : {
         "href" : "/products{?productId,name,brand} ",
         "templated" : true
      }
    },
    "_embedded" : {
      "product" : [{
         "_links" : {
            "self" : { "href" : "/products/32154" }
         },
         "productId" : 32154,
         "name" : "Sungsam iClone IX"
      }]
    }
}
GET /products/32154 HTTP/1.1

HTTP/1.1 200 OK

{
    "_links" : {
      "self" : { "href" : "/products/32154" },
      "profile" : {
         "href" : "http://example.com/schema/product"
      },
      "add-to-shopping-cart" : {
         "href" : "/shopping-cart/{shoppingCartId}/lines",
         "templated" : true
      }
    },
    "productId" : 32154,
    "name" : "Sungsam iClone IX",
    "brand" : "Sungsam",
    "availability" : "on stock",
    "price" : 699.95
}
POST /shopping-cart/794/lines HTTP/1.1

{
    "product" : { "href" : "/products/32154" },
    "quantity" : 1
}

[...]
HTTP/1.1 201 Created
Location: /shopping-cart/794/lines/1

{
    "_links" : {
      "self" : { "href" : "/shopping-cart/794/lines/1" },
      "profile" : {
         "href" : "http://example.com/schema/shopping-cart/line"
      },
      "shopping-cart" : { "href" : "/shopping-cart/794" },
      "product" : { "href" : "/product/32154" }
    },
    "productId" : 32154,
    "description" : "Sungsam iClone IX",
    "quantity" : 1,
    "price" : 699.95
}
DELETE /shopping-cart/794/lines/1 HTTP/1.1

HTTP/1.1 204 No Content
GET /shopping-cart/794 HTTP/1.1

HTTP/1.1 200 OK

{
    "_links" : {
      [...]
      "lines" : { "href" : "/lines" },
      "order" : { "href" : "/orders" }
    },
    "_embedded" : {
      "line" : [{
         "_links" : {
            "self" : { "href" : "/shopping-cart/794/lines/1" }
         },
         [...]
      }]
    },
    "priceTotal" : 699.95
}
POST /orders HTTP/1.1

{
    "shoppingCart" : { "href" : "/shopping-cart/794" }
}
HTTP/1.1 201 Created
Location: /orders/543

{
    "_links" : {
      [...]
    },
    "_embedded" : {
      "line" : [{
        "_links" : {
           "self" : { "href" : "/orders/543/lines/1" }
        },
        [...]
      }],
      "payment" : []
    },
    "priceTotal" : 699.95,
    "address" : null,
    "customer" : null,
    "status" : "unprocessed",
    "error" : "Missing or invalid information."
}
PUT /orders/543 HTTP/1.1

{
    "address" : {
      "street" : "Samplelane",
      "houseNumber" : "1337",
      "city" : "Demotown"
    },
    "customer" : {
      "name" : "John Doe",
      "email" : "john@doe.com"
    }
}
HTTP/1.1 200 OK

{
    "_links" : {
      [...]
      "payment" : { "href" : "/orders/543/payments" }
    },
    [...]
    "address" : {
      "street" : "Samplelane",
      "houseNumber" : "1337",
      "city" : "Demotown"
    },
    "customer" : {
      "name" : "John Doe",
      "email" : "john@doe.com"
    },
    "status" : "unprocessed",
    "error" : "Missing payment."
}
POST /orders/543/payments HTTP/1.1

{
    "amount" : 699.95,
    "type" : "creditCard",
    "issuer" : "Visa"
}
HTTP/1.1 201 Created
Location: /orders/543/payments/1

{
    "_links" : {
      "self" : { "href" : "/orders/543/payments/1" },
      "profile" : {
         "href" : "http://example.com/schema/payment"
      },
      "payment" : { "href" : "/orders/543/payments" }
      "order" : { "href" : "/orders/543" }
    },
    "amount" : 699.95,
    "type" : "creditCard",
    "issuer" : "Visa",
    "cardHolder" : "",
    "number" : "",
    "cvc" : "",
    "expirationDate" : "",
    "status" : "unprocessed",
    "error" : "Missing or invalid information."
}
PUT /orders/543/payments/1 HTTP/1.1

{
    "cardHolder" : "J. Doe",
    "number" : "4111111111111111",
    "cvc" : "123",
    "expirationDate" : "2020-01"
}
HTTP/1.1 200 OK

{
    "_links" : {
      "self" : { "href" : "/orders/543/payments/1" },
      "profile" : {
         "href" : "http://example.com/schema/payment"
      },
      "payment" : { "href" : "/orders/543/payments" }
      "order" : { "href" : "/orders/543" }
    },
    "amount" : 699.95,
    "type" : "creditCard",
    "issuer" : "Visa",
    "cardHolder" : "J. Doe",
    "number" : "************1111",
    "cvc" : "***",
    "expirationDate" : "2020-01"
    "status" : "processed",
    "error" : ""
}
GET /orders/543 HTTP/1.1

HTTP/1.1 200 OK

{
    [...]
    "_embedded" : {
      [...]
      "payment" : [{
         "_links" : {
           "self" : { "href" : "/orders/543/payments/1" },
           "amount" : 699.95,
           [...]
           "status" : "processed",
           "error" : ""       },
      }]
    },
    [...]
    "status" : "processed",
    "error" : ""
}
Hypermedia API’s
GET / HTTP/1.1
Accept: application/hal+json;
        profile=http://example.com/schema-v2;
        application/hal+json;
        profile=http://example.com/schema-v1;
        q=0.8
Hypermedia API’s
Hypermedia API’s

More Related Content

Viewers also liked

E-podręcznik – przyszłość edukacji
 E-podręcznik – przyszłość edukacji E-podręcznik – przyszłość edukacji
E-podręcznik – przyszłość edukacji3camp
 
Podążaj za marzeniami
Podążaj za marzeniamiPodążaj za marzeniami
Podążaj za marzeniami3camp
 
Mapp3
Mapp3Mapp3
Mapp33camp
 
Toostis
ToostisToostis
Toostis3camp
 
Metadane i społeczeństwo a zarządzanie wiedzą
Metadane i społeczeństwo a zarządzanie wiedząMetadane i społeczeństwo a zarządzanie wiedzą
Metadane i społeczeństwo a zarządzanie wiedzą3camp
 
Media społecznościowe w słuzbie alkoholu.
 Media społecznościowe w słuzbie alkoholu. Media społecznościowe w słuzbie alkoholu.
Media społecznościowe w słuzbie alkoholu.3camp
 
Aevintagestore
AevintagestoreAevintagestore
Aevintagestore3camp
 
Fundusze UE dla e-biznesu
Fundusze UE dla e-biznesuFundusze UE dla e-biznesu
Fundusze UE dla e-biznesu3camp
 
Pokaż kotku, co masz w środku profilowanie aplikacji z xhprof
Pokaż kotku, co masz w środku   profilowanie aplikacji z xhprofPokaż kotku, co masz w środku   profilowanie aplikacji z xhprof
Pokaż kotku, co masz w środku profilowanie aplikacji z xhprof3camp
 
3camp Logo Konkurs
3camp Logo Konkurs3camp Logo Konkurs
3camp Logo Konkurs3camp
 
Nasza-Klasa
Nasza-KlasaNasza-Klasa
Nasza-Klasa3camp
 
Kuba Marchwicki - Speechstorm - Usability w mediach innych niż www
Kuba Marchwicki - Speechstorm - Usability w mediach innych niż wwwKuba Marchwicki - Speechstorm - Usability w mediach innych niż www
Kuba Marchwicki - Speechstorm - Usability w mediach innych niż www3camp
 
3camp PTI
3camp PTI3camp PTI
3camp PTI3camp
 
Architektura serwisów webowych - szybko i boleśnie
Architektura serwisów webowych - szybko i boleśnieArchitektura serwisów webowych - szybko i boleśnie
Architektura serwisów webowych - szybko i boleśnie3camp
 
Ittechnology
IttechnologyIttechnology
Ittechnology3camp
 
Online User Experience
Online User ExperienceOnline User Experience
Online User Experience3camp
 
1 -knp labs--leszek-prabucki--wprowadzenie do bdd, czyli co jest zlego w star...
1 -knp labs--leszek-prabucki--wprowadzenie do bdd, czyli co jest zlego w star...1 -knp labs--leszek-prabucki--wprowadzenie do bdd, czyli co jest zlego w star...
1 -knp labs--leszek-prabucki--wprowadzenie do bdd, czyli co jest zlego w star...3camp
 
Gobarbra
GobarbraGobarbra
Gobarbra3camp
 
Aplikacja po drugiej stronie lustra, czyli rzeczywistość o magię rozszerzona.
 Aplikacja po drugiej stronie lustra, czyli rzeczywistość o magię rozszerzona. Aplikacja po drugiej stronie lustra, czyli rzeczywistość o magię rozszerzona.
Aplikacja po drugiej stronie lustra, czyli rzeczywistość o magię rozszerzona.3camp
 
Mobile Game Development Process
Mobile Game Development ProcessMobile Game Development Process
Mobile Game Development Process3camp
 

Viewers also liked (20)

E-podręcznik – przyszłość edukacji
 E-podręcznik – przyszłość edukacji E-podręcznik – przyszłość edukacji
E-podręcznik – przyszłość edukacji
 
Podążaj za marzeniami
Podążaj za marzeniamiPodążaj za marzeniami
Podążaj za marzeniami
 
Mapp3
Mapp3Mapp3
Mapp3
 
Toostis
ToostisToostis
Toostis
 
Metadane i społeczeństwo a zarządzanie wiedzą
Metadane i społeczeństwo a zarządzanie wiedząMetadane i społeczeństwo a zarządzanie wiedzą
Metadane i społeczeństwo a zarządzanie wiedzą
 
Media społecznościowe w słuzbie alkoholu.
 Media społecznościowe w słuzbie alkoholu. Media społecznościowe w słuzbie alkoholu.
Media społecznościowe w słuzbie alkoholu.
 
Aevintagestore
AevintagestoreAevintagestore
Aevintagestore
 
Fundusze UE dla e-biznesu
Fundusze UE dla e-biznesuFundusze UE dla e-biznesu
Fundusze UE dla e-biznesu
 
Pokaż kotku, co masz w środku profilowanie aplikacji z xhprof
Pokaż kotku, co masz w środku   profilowanie aplikacji z xhprofPokaż kotku, co masz w środku   profilowanie aplikacji z xhprof
Pokaż kotku, co masz w środku profilowanie aplikacji z xhprof
 
3camp Logo Konkurs
3camp Logo Konkurs3camp Logo Konkurs
3camp Logo Konkurs
 
Nasza-Klasa
Nasza-KlasaNasza-Klasa
Nasza-Klasa
 
Kuba Marchwicki - Speechstorm - Usability w mediach innych niż www
Kuba Marchwicki - Speechstorm - Usability w mediach innych niż wwwKuba Marchwicki - Speechstorm - Usability w mediach innych niż www
Kuba Marchwicki - Speechstorm - Usability w mediach innych niż www
 
3camp PTI
3camp PTI3camp PTI
3camp PTI
 
Architektura serwisów webowych - szybko i boleśnie
Architektura serwisów webowych - szybko i boleśnieArchitektura serwisów webowych - szybko i boleśnie
Architektura serwisów webowych - szybko i boleśnie
 
Ittechnology
IttechnologyIttechnology
Ittechnology
 
Online User Experience
Online User ExperienceOnline User Experience
Online User Experience
 
1 -knp labs--leszek-prabucki--wprowadzenie do bdd, czyli co jest zlego w star...
1 -knp labs--leszek-prabucki--wprowadzenie do bdd, czyli co jest zlego w star...1 -knp labs--leszek-prabucki--wprowadzenie do bdd, czyli co jest zlego w star...
1 -knp labs--leszek-prabucki--wprowadzenie do bdd, czyli co jest zlego w star...
 
Gobarbra
GobarbraGobarbra
Gobarbra
 
Aplikacja po drugiej stronie lustra, czyli rzeczywistość o magię rozszerzona.
 Aplikacja po drugiej stronie lustra, czyli rzeczywistość o magię rozszerzona. Aplikacja po drugiej stronie lustra, czyli rzeczywistość o magię rozszerzona.
Aplikacja po drugiej stronie lustra, czyli rzeczywistość o magię rozszerzona.
 
Mobile Game Development Process
Mobile Game Development ProcessMobile Game Development Process
Mobile Game Development Process
 

Similar to Hypermedia API’s

SDKs, the good the bad the ugly - Japan
SDKs, the good the bad the ugly - JapanSDKs, the good the bad the ugly - Japan
SDKs, the good the bad the ugly - Japantristansokol
 
Rich Results and Structured Data
Rich Results and Structured DataRich Results and Structured Data
Rich Results and Structured DataSMA Marketing
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDBAlex Zyl
 
Designing beautiful REST APIs
Designing beautiful REST APIsDesigning beautiful REST APIs
Designing beautiful REST APIsTomek Cejner
 
Chatting with HIpChat: APIs 101
Chatting with HIpChat: APIs 101Chatting with HIpChat: APIs 101
Chatting with HIpChat: APIs 101colleenfry
 
WordCamp Chiclana 2020 Crea schemas sin plugins
WordCamp Chiclana 2020 Crea schemas sin pluginsWordCamp Chiclana 2020 Crea schemas sin plugins
WordCamp Chiclana 2020 Crea schemas sin pluginsClosemarketing
 
Accepting payments using Stripe and Elixir
Accepting payments using Stripe and ElixirAccepting payments using Stripe and Elixir
Accepting payments using Stripe and ElixirAndrew Forward
 
Working and Winning With GraphQL
Working and Winning With GraphQLWorking and Winning With GraphQL
Working and Winning With GraphQLMbosinwa Awunor
 
Spca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_librariesSpca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_librariesNCCOMMS
 
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB
 
Abusing text/template for data transformation
Abusing text/template for data transformationAbusing text/template for data transformation
Abusing text/template for data transformationArnaud Porterie
 
Elasticsearch in 15 Minutes
Elasticsearch in 15 MinutesElasticsearch in 15 Minutes
Elasticsearch in 15 MinutesKarel Minarik
 
Data Modeling for Performance
Data Modeling for PerformanceData Modeling for Performance
Data Modeling for PerformanceMichael Dwan
 
Modeling for Performance
Modeling for PerformanceModeling for Performance
Modeling for PerformanceMongoDB
 
Agile Testing Days 2018 - API Fundamentals - postman collection
Agile Testing Days 2018 - API Fundamentals - postman collectionAgile Testing Days 2018 - API Fundamentals - postman collection
Agile Testing Days 2018 - API Fundamentals - postman collectionJoEllen Carter
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedMarcinStachniuk
 

Similar to Hypermedia API’s (20)

SDKs, the good the bad the ugly - Japan
SDKs, the good the bad the ugly - JapanSDKs, the good the bad the ugly - Japan
SDKs, the good the bad the ugly - Japan
 
Rich Results and Structured Data
Rich Results and Structured DataRich Results and Structured Data
Rich Results and Structured Data
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDB
 
Api vortrag
Api vortragApi vortrag
Api vortrag
 
Designing beautiful REST APIs
Designing beautiful REST APIsDesigning beautiful REST APIs
Designing beautiful REST APIs
 
Consumer-Centric API Design
Consumer-Centric API DesignConsumer-Centric API Design
Consumer-Centric API Design
 
Chatting with HIpChat: APIs 101
Chatting with HIpChat: APIs 101Chatting with HIpChat: APIs 101
Chatting with HIpChat: APIs 101
 
WordCamp Chiclana 2020 Crea schemas sin plugins
WordCamp Chiclana 2020 Crea schemas sin pluginsWordCamp Chiclana 2020 Crea schemas sin plugins
WordCamp Chiclana 2020 Crea schemas sin plugins
 
Accepting payments using Stripe and Elixir
Accepting payments using Stripe and ElixirAccepting payments using Stripe and Elixir
Accepting payments using Stripe and Elixir
 
Working and Winning With GraphQL
Working and Winning With GraphQLWorking and Winning With GraphQL
Working and Winning With GraphQL
 
Spca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_librariesSpca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_libraries
 
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
 
Abusing text/template for data transformation
Abusing text/template for data transformationAbusing text/template for data transformation
Abusing text/template for data transformation
 
Elasticsearch in 15 Minutes
Elasticsearch in 15 MinutesElasticsearch in 15 Minutes
Elasticsearch in 15 Minutes
 
Data Modeling for Performance
Data Modeling for PerformanceData Modeling for Performance
Data Modeling for Performance
 
Modeling for Performance
Modeling for PerformanceModeling for Performance
Modeling for Performance
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Agile Testing Days 2018 - API Fundamentals - postman collection
Agile Testing Days 2018 - API Fundamentals - postman collectionAgile Testing Days 2018 - API Fundamentals - postman collection
Agile Testing Days 2018 - API Fundamentals - postman collection
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
Consumer-centric API Design
Consumer-centric API DesignConsumer-centric API Design
Consumer-centric API Design
 

More from 3camp

Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek
Ochrona podatnych webaplikacji za pomocą wirtualnych poprawekOchrona podatnych webaplikacji za pomocą wirtualnych poprawek
Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek3camp
 
HTTPS bez wymówek
HTTPS bez wymówekHTTPS bez wymówek
HTTPS bez wymówek3camp
 
Jak udokumentować bazę danych
Jak udokumentować bazę danychJak udokumentować bazę danych
Jak udokumentować bazę danych3camp
 
ORM - tuningujemy podejście do mapowania
ORM - tuningujemy podejście do mapowaniaORM - tuningujemy podejście do mapowania
ORM - tuningujemy podejście do mapowania3camp
 
No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.
No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.
No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.3camp
 
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...3camp
 
Wykorzystanie języka Kotlin do aplikacji na platformie Android
Wykorzystanie języka Kotlin do aplikacji na platformie AndroidWykorzystanie języka Kotlin do aplikacji na platformie Android
Wykorzystanie języka Kotlin do aplikacji na platformie Android3camp
 
Learn you some rx for the greater good
Learn you some rx for the greater goodLearn you some rx for the greater good
Learn you some rx for the greater good3camp
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach3camp
 
Reakcja łańcuchowa, czyli React.js w praktyce
Reakcja łańcuchowa, czyli React.js w praktyceReakcja łańcuchowa, czyli React.js w praktyce
Reakcja łańcuchowa, czyli React.js w praktyce3camp
 
Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”
Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”
Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”3camp
 
AngularJS (nie) nadaje się do dużego projektu
AngularJS (nie) nadaje się do dużego projektuAngularJS (nie) nadaje się do dużego projektu
AngularJS (nie) nadaje się do dużego projektu3camp
 
Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...
Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...
Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...3camp
 
Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?
Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?
Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?3camp
 
Artur Senk, OKE Poland, Big Data na zakupach
Artur Senk, OKE Poland, Big Data na zakupachArtur Senk, OKE Poland, Big Data na zakupach
Artur Senk, OKE Poland, Big Data na zakupach3camp
 
Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...
Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...
Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...3camp
 
Marcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnie
Marcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnieMarcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnie
Marcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnie3camp
 
Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...
Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...
Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...3camp
 
Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...
Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...
Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...3camp
 
Marcin Szeląg, InnovationNest, Startup Risk Model
Marcin Szeląg, InnovationNest, Startup Risk ModelMarcin Szeląg, InnovationNest, Startup Risk Model
Marcin Szeląg, InnovationNest, Startup Risk Model3camp
 

More from 3camp (20)

Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek
Ochrona podatnych webaplikacji za pomocą wirtualnych poprawekOchrona podatnych webaplikacji za pomocą wirtualnych poprawek
Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek
 
HTTPS bez wymówek
HTTPS bez wymówekHTTPS bez wymówek
HTTPS bez wymówek
 
Jak udokumentować bazę danych
Jak udokumentować bazę danychJak udokumentować bazę danych
Jak udokumentować bazę danych
 
ORM - tuningujemy podejście do mapowania
ORM - tuningujemy podejście do mapowaniaORM - tuningujemy podejście do mapowania
ORM - tuningujemy podejście do mapowania
 
No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.
No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.
No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.
 
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
 
Wykorzystanie języka Kotlin do aplikacji na platformie Android
Wykorzystanie języka Kotlin do aplikacji na platformie AndroidWykorzystanie języka Kotlin do aplikacji na platformie Android
Wykorzystanie języka Kotlin do aplikacji na platformie Android
 
Learn you some rx for the greater good
Learn you some rx for the greater goodLearn you some rx for the greater good
Learn you some rx for the greater good
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach
 
Reakcja łańcuchowa, czyli React.js w praktyce
Reakcja łańcuchowa, czyli React.js w praktyceReakcja łańcuchowa, czyli React.js w praktyce
Reakcja łańcuchowa, czyli React.js w praktyce
 
Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”
Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”
Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”
 
AngularJS (nie) nadaje się do dużego projektu
AngularJS (nie) nadaje się do dużego projektuAngularJS (nie) nadaje się do dużego projektu
AngularJS (nie) nadaje się do dużego projektu
 
Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...
Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...
Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...
 
Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?
Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?
Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?
 
Artur Senk, OKE Poland, Big Data na zakupach
Artur Senk, OKE Poland, Big Data na zakupachArtur Senk, OKE Poland, Big Data na zakupach
Artur Senk, OKE Poland, Big Data na zakupach
 
Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...
Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...
Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...
 
Marcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnie
Marcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnieMarcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnie
Marcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnie
 
Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...
Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...
Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...
 
Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...
Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...
Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...
 
Marcin Szeląg, InnovationNest, Startup Risk Model
Marcin Szeląg, InnovationNest, Startup Risk ModelMarcin Szeląg, InnovationNest, Startup Risk Model
Marcin Szeląg, InnovationNest, Startup Risk Model
 

Hypermedia API’s

  • 51. { "_links" : { "self" : { "href" : "/products/32154" }, "profile" : { "href" : "http://example.com/schema/product" }, "add-to-shopping-cart" : { "href" : "/shopping-cart/{shoppingCartId}/lines", "templated" : true } }, "productId" : 32154, "name" : "Sungsam iClone IX", "brand" : "Sungsam", "availability" : "on stock", "price" : 699.95 }
  • 53. <resource href="/products/32154"> <link rel="profile" href="http://example.com/schema/product"/> <link rel="add-to-shopping-cart“ href="/shopping-cart/{shoppingCartId}/lines“ templated="true"/> <productId>32154</product> <name>Sungsam iClone IX</name> <brand>Sungsam</brand> <availability>on stock</availability> <price>699.95</price> </resource>
  • 56. { "_links" : { "self" : { "href" : "/shopping-cart/794" }, "profile" : { "href" : "http://example.com/schema/shopping-cart" }, "order" : { "href" : "/orders" } }, "_embedded" : { "line" : [{ "_links" : { "self" : { "href" : "/shopping-cart/794/lines/1" }, "product" : { "href" : "/product/32154" } }, "productId" : 32154, "description" : "Sungsam iClone IX", "quantity" : 1, "price" : 699.95 }] }, "priceTotal" : 699.95 }
  • 60. GET / HTTP/1.1 HTTP/1.1 200 OK { "_links" : { "self" : { "href" : "/" }, "profile" : { "href" : "http://example.com/schema/index" }, "orders" : { "href" : "/orders" }, "products" : { "href" : "/products{?productId,name,brand}", "templated" : true }, "shopping-carts" : { "href" : "/shopping-carts" }, } }
  • 61. GET /products?brand=Sungsam HTTP/1.1 HTTP/1.1 200 OK { "_links" : { [...] "products" : { "href" : "/products{?productId,name,brand} ", "templated" : true } }, "_embedded" : { "product" : [{ "_links" : { "self" : { "href" : "/products/32154" } }, "productId" : 32154, "name" : "Sungsam iClone IX" }] } }
  • 62. GET /products/32154 HTTP/1.1 HTTP/1.1 200 OK { "_links" : { "self" : { "href" : "/products/32154" }, "profile" : { "href" : "http://example.com/schema/product" }, "add-to-shopping-cart" : { "href" : "/shopping-cart/{shoppingCartId}/lines", "templated" : true } }, "productId" : 32154, "name" : "Sungsam iClone IX", "brand" : "Sungsam", "availability" : "on stock", "price" : 699.95 }
  • 63. POST /shopping-cart/794/lines HTTP/1.1 { "product" : { "href" : "/products/32154" }, "quantity" : 1 } [...]
  • 64. HTTP/1.1 201 Created Location: /shopping-cart/794/lines/1 { "_links" : { "self" : { "href" : "/shopping-cart/794/lines/1" }, "profile" : { "href" : "http://example.com/schema/shopping-cart/line" }, "shopping-cart" : { "href" : "/shopping-cart/794" }, "product" : { "href" : "/product/32154" } }, "productId" : 32154, "description" : "Sungsam iClone IX", "quantity" : 1, "price" : 699.95 }
  • 66. GET /shopping-cart/794 HTTP/1.1 HTTP/1.1 200 OK { "_links" : { [...] "lines" : { "href" : "/lines" }, "order" : { "href" : "/orders" } }, "_embedded" : { "line" : [{ "_links" : { "self" : { "href" : "/shopping-cart/794/lines/1" } }, [...] }] }, "priceTotal" : 699.95 }
  • 67. POST /orders HTTP/1.1 { "shoppingCart" : { "href" : "/shopping-cart/794" } }
  • 68. HTTP/1.1 201 Created Location: /orders/543 { "_links" : { [...] }, "_embedded" : { "line" : [{ "_links" : { "self" : { "href" : "/orders/543/lines/1" } }, [...] }], "payment" : [] }, "priceTotal" : 699.95, "address" : null, "customer" : null, "status" : "unprocessed", "error" : "Missing or invalid information." }
  • 69. PUT /orders/543 HTTP/1.1 { "address" : { "street" : "Samplelane", "houseNumber" : "1337", "city" : "Demotown" }, "customer" : { "name" : "John Doe", "email" : "john@doe.com" } }
  • 70. HTTP/1.1 200 OK { "_links" : { [...] "payment" : { "href" : "/orders/543/payments" } }, [...] "address" : { "street" : "Samplelane", "houseNumber" : "1337", "city" : "Demotown" }, "customer" : { "name" : "John Doe", "email" : "john@doe.com" }, "status" : "unprocessed", "error" : "Missing payment." }
  • 71. POST /orders/543/payments HTTP/1.1 { "amount" : 699.95, "type" : "creditCard", "issuer" : "Visa" }
  • 72. HTTP/1.1 201 Created Location: /orders/543/payments/1 { "_links" : { "self" : { "href" : "/orders/543/payments/1" }, "profile" : { "href" : "http://example.com/schema/payment" }, "payment" : { "href" : "/orders/543/payments" } "order" : { "href" : "/orders/543" } }, "amount" : 699.95, "type" : "creditCard", "issuer" : "Visa", "cardHolder" : "", "number" : "", "cvc" : "", "expirationDate" : "", "status" : "unprocessed", "error" : "Missing or invalid information." }
  • 73. PUT /orders/543/payments/1 HTTP/1.1 { "cardHolder" : "J. Doe", "number" : "4111111111111111", "cvc" : "123", "expirationDate" : "2020-01" }
  • 74. HTTP/1.1 200 OK { "_links" : { "self" : { "href" : "/orders/543/payments/1" }, "profile" : { "href" : "http://example.com/schema/payment" }, "payment" : { "href" : "/orders/543/payments" } "order" : { "href" : "/orders/543" } }, "amount" : 699.95, "type" : "creditCard", "issuer" : "Visa", "cardHolder" : "J. Doe", "number" : "************1111", "cvc" : "***", "expirationDate" : "2020-01" "status" : "processed", "error" : "" }
  • 75. GET /orders/543 HTTP/1.1 HTTP/1.1 200 OK { [...] "_embedded" : { [...] "payment" : [{ "_links" : { "self" : { "href" : "/orders/543/payments/1" }, "amount" : 699.95, [...] "status" : "processed", "error" : "" }, }] }, [...] "status" : "processed", "error" : "" }
  • 77. GET / HTTP/1.1 Accept: application/hal+json; profile=http://example.com/schema-v2; application/hal+json; profile=http://example.com/schema-v1; q=0.8