SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Downloaden Sie, um offline zu lesen
REST
         Ivano Malavolta
    ivano.malavolta@univaq.it
http://www.di.univaq.it/malavolta
Roadmap

•   The REST Architectural Style
•   Resources
•   Representations
•   Actions
•   Security
REST
It stands for


REpresentational State Transfer

Proposed by Roy Fieldings
in his PhD dissertation in 2000

REST rules the architecture of
the World Wide Web (HTTP)
Major players
REST Architectural Style

REST is not a technology, nor a framework

REST is an Architectural Style
  a set of principles + constraints

Thos constraints help us in developing applications
  that are “easy” to maintain and extend
REST Main Constraints
A RESTful system should be

  client-
• client-server
• stateless
   – there should be no need for the service to keep users’
     sessions
   – each request should be independent of others
• it has to support a caching system
• it has to be uniformly accessible
   – each resource must have a unique address and a valid
     point of access
The (static) Web as a RESTful system

1. you type a URL into your browser to reach a
   specific HTML page

2. the browser gets and displays the elements of the
   HTML page

      the browser is getting a representation
      of the current state of that resource
REST Overview

    In most cases,
    client-server
     comunication
    relies on HTTP




http://bit.ly/JALve1
REST Main Actors

These are the abstractions that make a RESTful system:

• Resources

• Representations

• Actions
Roadmap

•   The REST Architectural Style
•   Resources
•   Representations
•   Actions
•   Security
Resources
A resource is “everything” the service can provide
               everything”

States and functions of a remote application are also
  considered as resources

Example of resources:
• title of a movie from IMDb
• a Flash movie from YouTube
• images from Flickr
• order info from eBay
• etc.
Resources

In general, a RESTful resource is anything that is
  addressable over the Web

Addressable = anything that can be accessed and
  transferred between clients and servers

   a resource must have a unique address over the Web

  Under HTTP these are URIs
URIs
               Uniform Resource Identifier

in a RESTful web service is a hyperlink to a resource

It is the only means for clients and servers to exchange
  representations of resources

  ex.
        .../orderinfo?id=123
URIs
The URI is not meant to change over time
   it is the only means to locate a specific resource

URIs are also used to negotiate representations of a given
  resource

In the url you give certain parameters that define which
   information you want the server to return to you (just
   like giving GET variables to a page)

The server will respond you with a resource representation
  containing the information you’ve asked
URIs

URIs are also used to link resources together

ex.
Roadmap

•   The REST Architectural Style
•   Resources
•   Representations
•   Actions
•   Security
Representations

The representation of resources is what is sent back
  and forth between clients and servers

So, we never send or receive resources, only their
  representations
URL
                Uniform Resource Locator

A URL is a specialization of URI that defines the network
  location of a specific resource

Unlike a URI, the URL defines how the resource can be
  obtained

  es.
        http://some.domain.com/orderinfo?id=123
Representations

The format of the representation is determined by the
  content-
  content-type

The interaction of the representation on the resource
  is determined by the action (GET, SET, etc.)
Content-types
Since we are using HTTP to communicate, we can transfer
   any kind of information that can be passed between
   clients and servers

ex. text files, PDF documents, images, videos, etc.

In any case, the data is streamed over TCP/IP and the
   browser knows how to interpret the binary streams
   because of the HTTP protocol response header Content-
  Type
Representation Formats
Different clients are able to consume different
   representations of the same resource

A representation can take various forms such as:
                                  forms,

•   image
•   a text file
•   an XML stream
•   a JSON stream

but its resource has to be available through the same
  URI
Representation Formats

For human-generated requests through a web browser,
  a representation is typically in the form of an HTML
  page




For automated requests from other web services,
  readability is not as important and a more efficient
  representation can be used such as XML or JSON
Roadmap

•   The REST Architectural Style
•   Resources
•   Representations
•   Actions
•   Security
Actions

Actions are used to operate on resources

For example, they can be used for
    – getting info about a movie
    – adding a photo to Flickr
    – deleting a file from a folder


The data transmitted to and from the resource is a
  representation of it
HTTP-based Actions

Under HTTP, actions are standard HTTP request:


      GET
      POST
      PUT
      DELETE

They make up the uniform interface used for
  client/server data transfers
HTTP-based Actions




RESTful web services can also execute logic at the
  server level, but remembering that every result
  must be a resource representation
HTTP as Uniform Interface
In RESTful systems we focus on resource names whereas
                                          names,
  in traditional web systems we focussed on the actions to
  be performed on resources

  In RESTful systems we have four specific actions that
  we can take upon resources — Create, Retrieve, Update,
  and Delete (CRUD)

  In traditional web applications, we could have countless
  actions with no naming or implementation standards
The Classroom Example

Artificial example of a web service handling students
  in some classroom

Location of the service = http://restfuljava.com/

Resources are represented as XML streams
The Classroom Example: URIs

Student (identified by name):
  http://restfuljava.com/students/{name}


List of students:
  http://restfuljava.com/students
The Classroom Example: Representations

Student:

<student>
  <name>Jane</name>
  <age>10</age>
  <link>/students/Jane</link>
</student>
The Classroom Example: Representations

Students List:
<students>
  <student>
     <name>Jane</name>
     <age>10</age>
     <link>/students/Jane</link>
  </student>
  <student>
     <name>John</name>
     <age>11</age>
     <link>/students/John</link>
  </student>
</students>
GET

The method GET is used to RETRIEVE resources

It cannot have side-effects
  it can be done repeatedly without changing the state
  of the resource

It can also return only parts of the resource
   it can act as both a read operation and a query
  operation
GET Example
POST

The method POST is used to CREATE resources



Usually, the resource identity/URL is not known at
  creation time

   The URL of the newly created resource is usually
      created automatically by the server
POST Example
PUT

The method PUT is used to UPDATE resources

Recurrent PUT workflow:
1. we first GET the representation of the resource we
   need to update
2. in the client we update the resource with the new
   value(s)
3. we update the resource using a PUT request
   together with the representation as its payload
PUT Example




 The initial
   GET is
omitted here
DELETE

The method DELETE is used to DELETE resources

Similarly to PUT, also in this case we need the URI of
  the resource being deleted
DELETE Example
A note on PUT and DELETE

PUT and DELETE apply to the entire resource

     when doing a PUT or DELETE operation, the entire
     resource is replaced/deleted


The PUT and DELETE operations are atomic

     if two PUT/DELETE operations occur simultaneously, one
     of them will win and determine the final state of the
     resource
HTTP Status Codes

RESTful services use these codes to return information
  about the response of the requests

   1xx      informational message
   2xx      success message
   3xx      redirects the client to another URL
   4xx      client-side error
   5xx      server-side error
Roadmap

•   The REST Architectural Style
•   Resources
•   Representations
•   Actions
•   Security
Security

Here we will focus on securing user access to our
  services

There are three main methods:

1. Custom token authentication
                                       Control access
                                       to resources
2. HTTP Basic authentication

              Accessing services
3. OAuth
              on behalf of users
Custom Token Authentication

2-steps process

1. The server generates a unique token for a registered
   API user
2. The registered user sends the generated token for
   authentication with every request to the service

The token can be used to enable a specific user, to check
   if traffic limits have been exceeded, etc.
Pros and Cons

+ The generation of an access token is independent
  of the web service
+ It is a simple approach
  – while creating a user registration process, the server
    generates a unique token per accountAccess

+ data exchange can be logged and verified
  – since access is controlled for each request

- This method is not secure
  – The passed token can be copied and reused without
    authorization
How to send the token?

The authentication token is sent with every request in
  two ways:

1. it can be part of the URI



2. it can be added to the HTTP request header
HTTP Basic authentication
    The client sends the (cleartext Base64 encoded)
      username and password pair in the HTTP header
       Authorization




    Username and password must be sent for every HTTP
      request for the authorization to be validated
http://bit.ly/JFGCQW
Pros and Cons

+ clients must manage server authorization requests

- in general, it is not secure
   - because usernames and passwords are only encoded using
     Base64 encoding, which can be easily deciphered


+ this potential security hole can be solved by using
  HTTPS (SSL)
Client/server transaction
It can take 2 forms:

1. a client makes a request to the server without
   authentication credentials
  –   the server sends a response with an HTTP error code of 401
      (unauthorized access)
  –   we need to programmatically intercept the 401 response and
      then provide valid credentials to complete the original
      request

2. a client makes a request to the server with
   authentication credentials from the beginning
Example of Request
<input type="text" name=“u" id=“u" value="" />
<input type="password" name=“p" id=“p" value="" />

var username = $('#u').val();
var password = MD5($('#p').val());
$.ajax({
  type: 'POST',
  url: ‘https://www.domain.com/login.php',
  data: {
      username: username,
      password: password
  },
  success: function(result) {
      console.log(“logged in”);
  }
});
Oauth 2.0

OAuth's authorization protocol is becoming the
  preferred authorization scheme

It is simple and easy to
integrate to RESTful services

Open source protocol
 pen
What are we talking about...




http://slidesha.re/JdfBGy
OAuth




your           Service
app            provider
OAuth 2.0
It is used for accessing web services on the behalf of
  the user

OAuth is an authorization protocol that allows
  third-
  third-party web service creators (you) to get
  access to users' data stored in a different web
  service

This can happen only with users' consent and without a
  username and password exchange
OAuth 2.0

Before OAuth, users needed to pass login information
  to multiple third party services

With OAuth, users don’t divulge their login information
  authorization is granted from the provider service,
  where both user’s data and credentials are stored

   the consumer service only receives an authorization
  token that is used to access data from the provider
  service
OAuth Basics
Authentication
• Need to log in to access parts of a website
   –   ex: view user profile
   –   post a photo
   –   add a friend
   –   view private messages


Token-
Token-based Authentication
• Logged-in user has a unique token used to access
  data from your app
Intuition behind OAuth
OAuth 2.0 Authentication flow
                                                                  the
                                                                  user
       your
       app


                                                                Auth Server
                                                               (ex. Facebook)




                                                     The server hosting
                                                    protected resources
                                                       (ex. Facebook)



http://tools.ietf.org/html/draft-ietf-oauth-v2-26
Example: Google+
References



http://bit.ly/JA1UPT



Cordova plugin for FB:
    http://bit.ly/JdjoUh

Weitere ähnliche Inhalte

Was ist angesagt?

Ch06 ado.net fundamentals
Ch06 ado.net fundamentalsCh06 ado.net fundamentals
Ch06 ado.net fundamentalsMadhuri Kavade
 
Dicoding Developer Coaching #20: Android | Apa itu Content Provider?
Dicoding Developer Coaching #20: Android | Apa itu Content Provider?Dicoding Developer Coaching #20: Android | Apa itu Content Provider?
Dicoding Developer Coaching #20: Android | Apa itu Content Provider?DicodingEvent
 
Hibernate - Part 1
Hibernate - Part 1Hibernate - Part 1
Hibernate - Part 1Hitesh-Java
 
Database Programming
Database ProgrammingDatabase Programming
Database ProgrammingHenry Osborne
 
Java Servlet
Java ServletJava Servlet
Java ServletYoga Raja
 
Database connect
Database connectDatabase connect
Database connectYoga Raja
 
Jdbc example program with access and MySql
Jdbc example program with access and MySqlJdbc example program with access and MySql
Jdbc example program with access and MySqlkamal kotecha
 
Databases in Android Application
Databases in Android ApplicationDatabases in Android Application
Databases in Android ApplicationMark Lester Navarro
 
Accessing data with android cursors
Accessing data with android cursorsAccessing data with android cursors
Accessing data with android cursorsinfo_zybotech
 
Datasource in asp.net
Datasource in asp.netDatasource in asp.net
Datasource in asp.netSireesh K
 
Android Database Tutorial
Android Database TutorialAndroid Database Tutorial
Android Database TutorialPerfect APK
 
Persitance Data with sqlite
Persitance Data with sqlitePersitance Data with sqlite
Persitance Data with sqliteArif Huda
 

Was ist angesagt? (20)

Android Data Persistence
Android Data PersistenceAndroid Data Persistence
Android Data Persistence
 
Android Database
Android DatabaseAndroid Database
Android Database
 
Ch06 ado.net fundamentals
Ch06 ado.net fundamentalsCh06 ado.net fundamentals
Ch06 ado.net fundamentals
 
Dicoding Developer Coaching #20: Android | Apa itu Content Provider?
Dicoding Developer Coaching #20: Android | Apa itu Content Provider?Dicoding Developer Coaching #20: Android | Apa itu Content Provider?
Dicoding Developer Coaching #20: Android | Apa itu Content Provider?
 
Hibernate - Part 1
Hibernate - Part 1Hibernate - Part 1
Hibernate - Part 1
 
CodeIgniter & MVC
CodeIgniter & MVCCodeIgniter & MVC
CodeIgniter & MVC
 
JDBC Part - 2
JDBC Part - 2JDBC Part - 2
JDBC Part - 2
 
Database Programming
Database ProgrammingDatabase Programming
Database Programming
 
Java Servlet
Java ServletJava Servlet
Java Servlet
 
Persistences
PersistencesPersistences
Persistences
 
Database in Android
Database in AndroidDatabase in Android
Database in Android
 
Database connect
Database connectDatabase connect
Database connect
 
Data Binding
Data BindingData Binding
Data Binding
 
Jdbc example program with access and MySql
Jdbc example program with access and MySqlJdbc example program with access and MySql
Jdbc example program with access and MySql
 
Ch 7 data binding
Ch 7 data bindingCh 7 data binding
Ch 7 data binding
 
Databases in Android Application
Databases in Android ApplicationDatabases in Android Application
Databases in Android Application
 
Accessing data with android cursors
Accessing data with android cursorsAccessing data with android cursors
Accessing data with android cursors
 
Datasource in asp.net
Datasource in asp.netDatasource in asp.net
Datasource in asp.net
 
Android Database Tutorial
Android Database TutorialAndroid Database Tutorial
Android Database Tutorial
 
Persitance Data with sqlite
Persitance Data with sqlitePersitance Data with sqlite
Persitance Data with sqlite
 

Ähnlich wie REST Basics

[2015/2016] The REST architectural style
[2015/2016] The REST architectural style[2015/2016] The REST architectural style
[2015/2016] The REST architectural styleIvano Malavolta
 
Restful Fundamentals
Restful FundamentalsRestful Fundamentals
Restful FundamentalsSuresh Madhra
 
Restful Fundamentals
Restful FundamentalsRestful Fundamentals
Restful FundamentalsSuresh Madhra
 
Network Device Database Management with REST using Jersey
Network Device Database Management with REST using JerseyNetwork Device Database Management with REST using Jersey
Network Device Database Management with REST using JerseyPayal Jain
 
Restful webservice
Restful webserviceRestful webservice
Restful webserviceDong Ngoc
 
RESTFul WebApp Concept
RESTFul WebApp ConceptRESTFul WebApp Concept
RESTFul WebApp ConceptDian Aditya
 
RESTFul WebApp Concept
RESTFul WebApp ConceptRESTFul WebApp Concept
RESTFul WebApp ConceptDian Aditya
 
Restful web-services
Restful web-servicesRestful web-services
Restful web-servicesrporwal
 
REST Introduction.ppt
REST Introduction.pptREST Introduction.ppt
REST Introduction.pptKGSCSEPSGCT
 
Creating Restful Web Services with restish
Creating Restful Web Services with restishCreating Restful Web Services with restish
Creating Restful Web Services with restishGrig Gheorghiu
 
Rest webservice ppt
Rest webservice pptRest webservice ppt
Rest webservice pptsinhatanay
 
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid RahimianAPI Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid RahimianVahid Rahimian
 

Ähnlich wie REST Basics (20)

Rest
Rest Rest
Rest
 
[2015/2016] The REST architectural style
[2015/2016] The REST architectural style[2015/2016] The REST architectural style
[2015/2016] The REST architectural style
 
Restful Fundamentals
Restful FundamentalsRestful Fundamentals
Restful Fundamentals
 
Restful Fundamentals
Restful FundamentalsRestful Fundamentals
Restful Fundamentals
 
ROA.ppt
ROA.pptROA.ppt
ROA.ppt
 
ReSTful API Final
ReSTful API FinalReSTful API Final
ReSTful API Final
 
Network Device Database Management with REST using Jersey
Network Device Database Management with REST using JerseyNetwork Device Database Management with REST using Jersey
Network Device Database Management with REST using Jersey
 
Restful webservice
Restful webserviceRestful webservice
Restful webservice
 
Rest
RestRest
Rest
 
RESTFul WebApp Concept
RESTFul WebApp ConceptRESTFul WebApp Concept
RESTFul WebApp Concept
 
RESTFul WebApp Concept
RESTFul WebApp ConceptRESTFul WebApp Concept
RESTFul WebApp Concept
 
Restful web-services
Restful web-servicesRestful web-services
Restful web-services
 
Mini-Training: Let's have a rest
Mini-Training: Let's have a restMini-Training: Let's have a rest
Mini-Training: Let's have a rest
 
REST Introduction.ppt
REST Introduction.pptREST Introduction.ppt
REST Introduction.ppt
 
Rest and Rails
Rest and RailsRest and Rails
Rest and Rails
 
Creating Restful Web Services with restish
Creating Restful Web Services with restishCreating Restful Web Services with restish
Creating Restful Web Services with restish
 
Rest introduction
Rest introductionRest introduction
Rest introduction
 
ReSTfulAPIs
ReSTfulAPIsReSTfulAPIs
ReSTfulAPIs
 
Rest webservice ppt
Rest webservice pptRest webservice ppt
Rest webservice ppt
 
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid RahimianAPI Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
 

Mehr von Ivano Malavolta

Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...Ivano Malavolta
 
The Green Lab - Research cocktail @Vrije Universiteit Amsterdam (October 2020)
The Green Lab - Research cocktail  @Vrije Universiteit Amsterdam (October 2020)The Green Lab - Research cocktail  @Vrije Universiteit Amsterdam (October 2020)
The Green Lab - Research cocktail @Vrije Universiteit Amsterdam (October 2020)Ivano Malavolta
 
Software sustainability and Green IT
Software sustainability and Green ITSoftware sustainability and Green IT
Software sustainability and Green ITIvano Malavolta
 
Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Navigation-aware and Personalized Prefetching of Network Requests in Android ...Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Navigation-aware and Personalized Prefetching of Network Requests in Android ...Ivano Malavolta
 
How Maintainability Issues of Android Apps Evolve [ICSME 2018]
How Maintainability Issues of Android Apps Evolve [ICSME 2018]How Maintainability Issues of Android Apps Evolve [ICSME 2018]
How Maintainability Issues of Android Apps Evolve [ICSME 2018]Ivano Malavolta
 
Collaborative Model-Driven Software Engineering: a Classification Framework a...
Collaborative Model-Driven Software Engineering: a Classification Framework a...Collaborative Model-Driven Software Engineering: a Classification Framework a...
Collaborative Model-Driven Software Engineering: a Classification Framework a...Ivano Malavolta
 
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...Ivano Malavolta
 
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...Ivano Malavolta
 
Modeling behaviour via UML state machines [Software Design] [Computer Science...
Modeling behaviour via UML state machines [Software Design] [Computer Science...Modeling behaviour via UML state machines [Software Design] [Computer Science...
Modeling behaviour via UML state machines [Software Design] [Computer Science...Ivano Malavolta
 
Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Object-oriented design patterns in UML [Software Design] [Computer Science] [...Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Object-oriented design patterns in UML [Software Design] [Computer Science] [...Ivano Malavolta
 
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...Ivano Malavolta
 
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...Ivano Malavolta
 
Modeling and abstraction, software development process [Software Design] [Com...
Modeling and abstraction, software development process [Software Design] [Com...Modeling and abstraction, software development process [Software Design] [Com...
Modeling and abstraction, software development process [Software Design] [Com...Ivano Malavolta
 
[2017/2018] Agile development
[2017/2018] Agile development[2017/2018] Agile development
[2017/2018] Agile developmentIvano Malavolta
 
Reconstructing microservice-based architectures
Reconstructing microservice-based architecturesReconstructing microservice-based architectures
Reconstructing microservice-based architecturesIvano Malavolta
 
[2017/2018] AADL - Architecture Analysis and Design Language
[2017/2018] AADL - Architecture Analysis and Design Language[2017/2018] AADL - Architecture Analysis and Design Language
[2017/2018] AADL - Architecture Analysis and Design LanguageIvano Malavolta
 
[2017/2018] Architectural languages
[2017/2018] Architectural languages[2017/2018] Architectural languages
[2017/2018] Architectural languagesIvano Malavolta
 
[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software Architecture[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software ArchitectureIvano Malavolta
 
[2017/2018] RESEARCH in software engineering
[2017/2018] RESEARCH in software engineering[2017/2018] RESEARCH in software engineering
[2017/2018] RESEARCH in software engineeringIvano Malavolta
 

Mehr von Ivano Malavolta (20)

Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
 
The H2020 experience
The H2020 experienceThe H2020 experience
The H2020 experience
 
The Green Lab - Research cocktail @Vrije Universiteit Amsterdam (October 2020)
The Green Lab - Research cocktail  @Vrije Universiteit Amsterdam (October 2020)The Green Lab - Research cocktail  @Vrije Universiteit Amsterdam (October 2020)
The Green Lab - Research cocktail @Vrije Universiteit Amsterdam (October 2020)
 
Software sustainability and Green IT
Software sustainability and Green ITSoftware sustainability and Green IT
Software sustainability and Green IT
 
Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Navigation-aware and Personalized Prefetching of Network Requests in Android ...Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Navigation-aware and Personalized Prefetching of Network Requests in Android ...
 
How Maintainability Issues of Android Apps Evolve [ICSME 2018]
How Maintainability Issues of Android Apps Evolve [ICSME 2018]How Maintainability Issues of Android Apps Evolve [ICSME 2018]
How Maintainability Issues of Android Apps Evolve [ICSME 2018]
 
Collaborative Model-Driven Software Engineering: a Classification Framework a...
Collaborative Model-Driven Software Engineering: a Classification Framework a...Collaborative Model-Driven Software Engineering: a Classification Framework a...
Collaborative Model-Driven Software Engineering: a Classification Framework a...
 
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
 
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
 
Modeling behaviour via UML state machines [Software Design] [Computer Science...
Modeling behaviour via UML state machines [Software Design] [Computer Science...Modeling behaviour via UML state machines [Software Design] [Computer Science...
Modeling behaviour via UML state machines [Software Design] [Computer Science...
 
Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Object-oriented design patterns in UML [Software Design] [Computer Science] [...Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Object-oriented design patterns in UML [Software Design] [Computer Science] [...
 
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
 
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
 
Modeling and abstraction, software development process [Software Design] [Com...
Modeling and abstraction, software development process [Software Design] [Com...Modeling and abstraction, software development process [Software Design] [Com...
Modeling and abstraction, software development process [Software Design] [Com...
 
[2017/2018] Agile development
[2017/2018] Agile development[2017/2018] Agile development
[2017/2018] Agile development
 
Reconstructing microservice-based architectures
Reconstructing microservice-based architecturesReconstructing microservice-based architectures
Reconstructing microservice-based architectures
 
[2017/2018] AADL - Architecture Analysis and Design Language
[2017/2018] AADL - Architecture Analysis and Design Language[2017/2018] AADL - Architecture Analysis and Design Language
[2017/2018] AADL - Architecture Analysis and Design Language
 
[2017/2018] Architectural languages
[2017/2018] Architectural languages[2017/2018] Architectural languages
[2017/2018] Architectural languages
 
[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software Architecture[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software Architecture
 
[2017/2018] RESEARCH in software engineering
[2017/2018] RESEARCH in software engineering[2017/2018] RESEARCH in software engineering
[2017/2018] RESEARCH in software engineering
 

Kürzlich hochgeladen

Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management SystemChristalin Nelson
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptxmary850239
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptxiammrhaywood
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfErwinPantujan2
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfJemuel Francisco
 
Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)cama23
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptxmary850239
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSJoshuaGantuangco2
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPCeline George
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Mark Reed
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptxmary850239
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxAshokKarra1
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 

Kürzlich hochgeladen (20)

YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptxYOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management System
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
 
Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptxLEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERP
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptx
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 

REST Basics

  • 1. REST Ivano Malavolta ivano.malavolta@univaq.it http://www.di.univaq.it/malavolta
  • 2. Roadmap • The REST Architectural Style • Resources • Representations • Actions • Security
  • 3. REST It stands for REpresentational State Transfer Proposed by Roy Fieldings in his PhD dissertation in 2000 REST rules the architecture of the World Wide Web (HTTP)
  • 5. REST Architectural Style REST is not a technology, nor a framework REST is an Architectural Style a set of principles + constraints Thos constraints help us in developing applications that are “easy” to maintain and extend
  • 6. REST Main Constraints A RESTful system should be client- • client-server • stateless – there should be no need for the service to keep users’ sessions – each request should be independent of others • it has to support a caching system • it has to be uniformly accessible – each resource must have a unique address and a valid point of access
  • 7. The (static) Web as a RESTful system 1. you type a URL into your browser to reach a specific HTML page 2. the browser gets and displays the elements of the HTML page the browser is getting a representation of the current state of that resource
  • 8. REST Overview In most cases, client-server comunication relies on HTTP http://bit.ly/JALve1
  • 9. REST Main Actors These are the abstractions that make a RESTful system: • Resources • Representations • Actions
  • 10. Roadmap • The REST Architectural Style • Resources • Representations • Actions • Security
  • 11. Resources A resource is “everything” the service can provide everything” States and functions of a remote application are also considered as resources Example of resources: • title of a movie from IMDb • a Flash movie from YouTube • images from Flickr • order info from eBay • etc.
  • 12. Resources In general, a RESTful resource is anything that is addressable over the Web Addressable = anything that can be accessed and transferred between clients and servers a resource must have a unique address over the Web Under HTTP these are URIs
  • 13. URIs Uniform Resource Identifier in a RESTful web service is a hyperlink to a resource It is the only means for clients and servers to exchange representations of resources ex. .../orderinfo?id=123
  • 14. URIs The URI is not meant to change over time it is the only means to locate a specific resource URIs are also used to negotiate representations of a given resource In the url you give certain parameters that define which information you want the server to return to you (just like giving GET variables to a page) The server will respond you with a resource representation containing the information you’ve asked
  • 15. URIs URIs are also used to link resources together ex.
  • 16. Roadmap • The REST Architectural Style • Resources • Representations • Actions • Security
  • 17. Representations The representation of resources is what is sent back and forth between clients and servers So, we never send or receive resources, only their representations
  • 18. URL Uniform Resource Locator A URL is a specialization of URI that defines the network location of a specific resource Unlike a URI, the URL defines how the resource can be obtained es. http://some.domain.com/orderinfo?id=123
  • 19. Representations The format of the representation is determined by the content- content-type The interaction of the representation on the resource is determined by the action (GET, SET, etc.)
  • 20. Content-types Since we are using HTTP to communicate, we can transfer any kind of information that can be passed between clients and servers ex. text files, PDF documents, images, videos, etc. In any case, the data is streamed over TCP/IP and the browser knows how to interpret the binary streams because of the HTTP protocol response header Content- Type
  • 21. Representation Formats Different clients are able to consume different representations of the same resource A representation can take various forms such as: forms, • image • a text file • an XML stream • a JSON stream but its resource has to be available through the same URI
  • 22. Representation Formats For human-generated requests through a web browser, a representation is typically in the form of an HTML page For automated requests from other web services, readability is not as important and a more efficient representation can be used such as XML or JSON
  • 23. Roadmap • The REST Architectural Style • Resources • Representations • Actions • Security
  • 24. Actions Actions are used to operate on resources For example, they can be used for – getting info about a movie – adding a photo to Flickr – deleting a file from a folder The data transmitted to and from the resource is a representation of it
  • 25. HTTP-based Actions Under HTTP, actions are standard HTTP request: GET POST PUT DELETE They make up the uniform interface used for client/server data transfers
  • 26. HTTP-based Actions RESTful web services can also execute logic at the server level, but remembering that every result must be a resource representation
  • 27. HTTP as Uniform Interface In RESTful systems we focus on resource names whereas names, in traditional web systems we focussed on the actions to be performed on resources In RESTful systems we have four specific actions that we can take upon resources — Create, Retrieve, Update, and Delete (CRUD) In traditional web applications, we could have countless actions with no naming or implementation standards
  • 28. The Classroom Example Artificial example of a web service handling students in some classroom Location of the service = http://restfuljava.com/ Resources are represented as XML streams
  • 29. The Classroom Example: URIs Student (identified by name): http://restfuljava.com/students/{name} List of students: http://restfuljava.com/students
  • 30. The Classroom Example: Representations Student: <student> <name>Jane</name> <age>10</age> <link>/students/Jane</link> </student>
  • 31. The Classroom Example: Representations Students List: <students> <student> <name>Jane</name> <age>10</age> <link>/students/Jane</link> </student> <student> <name>John</name> <age>11</age> <link>/students/John</link> </student> </students>
  • 32. GET The method GET is used to RETRIEVE resources It cannot have side-effects it can be done repeatedly without changing the state of the resource It can also return only parts of the resource it can act as both a read operation and a query operation
  • 34. POST The method POST is used to CREATE resources Usually, the resource identity/URL is not known at creation time The URL of the newly created resource is usually created automatically by the server
  • 36. PUT The method PUT is used to UPDATE resources Recurrent PUT workflow: 1. we first GET the representation of the resource we need to update 2. in the client we update the resource with the new value(s) 3. we update the resource using a PUT request together with the representation as its payload
  • 37. PUT Example The initial GET is omitted here
  • 38. DELETE The method DELETE is used to DELETE resources Similarly to PUT, also in this case we need the URI of the resource being deleted
  • 40. A note on PUT and DELETE PUT and DELETE apply to the entire resource when doing a PUT or DELETE operation, the entire resource is replaced/deleted The PUT and DELETE operations are atomic if two PUT/DELETE operations occur simultaneously, one of them will win and determine the final state of the resource
  • 41. HTTP Status Codes RESTful services use these codes to return information about the response of the requests 1xx informational message 2xx success message 3xx redirects the client to another URL 4xx client-side error 5xx server-side error
  • 42. Roadmap • The REST Architectural Style • Resources • Representations • Actions • Security
  • 43. Security Here we will focus on securing user access to our services There are three main methods: 1. Custom token authentication Control access to resources 2. HTTP Basic authentication Accessing services 3. OAuth on behalf of users
  • 44. Custom Token Authentication 2-steps process 1. The server generates a unique token for a registered API user 2. The registered user sends the generated token for authentication with every request to the service The token can be used to enable a specific user, to check if traffic limits have been exceeded, etc.
  • 45. Pros and Cons + The generation of an access token is independent of the web service + It is a simple approach – while creating a user registration process, the server generates a unique token per accountAccess + data exchange can be logged and verified – since access is controlled for each request - This method is not secure – The passed token can be copied and reused without authorization
  • 46. How to send the token? The authentication token is sent with every request in two ways: 1. it can be part of the URI 2. it can be added to the HTTP request header
  • 47. HTTP Basic authentication The client sends the (cleartext Base64 encoded) username and password pair in the HTTP header Authorization Username and password must be sent for every HTTP request for the authorization to be validated http://bit.ly/JFGCQW
  • 48. Pros and Cons + clients must manage server authorization requests - in general, it is not secure - because usernames and passwords are only encoded using Base64 encoding, which can be easily deciphered + this potential security hole can be solved by using HTTPS (SSL)
  • 49. Client/server transaction It can take 2 forms: 1. a client makes a request to the server without authentication credentials – the server sends a response with an HTTP error code of 401 (unauthorized access) – we need to programmatically intercept the 401 response and then provide valid credentials to complete the original request 2. a client makes a request to the server with authentication credentials from the beginning
  • 50. Example of Request <input type="text" name=“u" id=“u" value="" /> <input type="password" name=“p" id=“p" value="" /> var username = $('#u').val(); var password = MD5($('#p').val()); $.ajax({ type: 'POST', url: ‘https://www.domain.com/login.php', data: { username: username, password: password }, success: function(result) { console.log(“logged in”); } });
  • 51. Oauth 2.0 OAuth's authorization protocol is becoming the preferred authorization scheme It is simple and easy to integrate to RESTful services Open source protocol pen
  • 52. What are we talking about... http://slidesha.re/JdfBGy
  • 53. OAuth your Service app provider
  • 54. OAuth 2.0 It is used for accessing web services on the behalf of the user OAuth is an authorization protocol that allows third- third-party web service creators (you) to get access to users' data stored in a different web service This can happen only with users' consent and without a username and password exchange
  • 55. OAuth 2.0 Before OAuth, users needed to pass login information to multiple third party services With OAuth, users don’t divulge their login information authorization is granted from the provider service, where both user’s data and credentials are stored the consumer service only receives an authorization token that is used to access data from the provider service
  • 56. OAuth Basics Authentication • Need to log in to access parts of a website – ex: view user profile – post a photo – add a friend – view private messages Token- Token-based Authentication • Logged-in user has a unique token used to access data from your app
  • 58. OAuth 2.0 Authentication flow the user your app Auth Server (ex. Facebook) The server hosting protected resources (ex. Facebook) http://tools.ietf.org/html/draft-ietf-oauth-v2-26