WA2785

RESTful Service Architecture Training

This course introduces Enterprise and Solutions Architects to the fundamentals of RESTful Service Architecture. Content starts at the source with the doctoral thesis of Roy Fielding that introduced REST. Participants will explore the six architectural constraints and four interface constraints defined by Fielding.
Course Details

Duration

3 days

Prerequisites

Some experience with software architecture is recommended.

Target Audience

  • Solutions Architects
  • Enterprise Architects
  • Developers

Skills Gained

  • Mapping RESTful Architecture to HTTP Web services
  • Special uses of the GET, PUT, POST, and PATCH methods
Course Outline
  • Introduction to RESTful Services
    • The History of Web Services
    • Roy Fielding
    • REST is not a Standard – it's a Way of Life
    • So What is REST?
    • What is REST
    • Constraints
    • Representations
    • Resources
    • Uniform Interface
    • Stateless Operations
    • Related Standards: URL
    • Related Standards: HTTP
    • HTTP Methods
    • HTTP Status Codes
    • Related Standards: MIME
    • REST Resource Examples
  • REST Architecture Constraints
    • REST Architectural Constraints
    • Client/Server
    • Stateless
    • Cacheable
    • Uniform Interface
    • Layered System
    • Code on Demand
    • REST Interface Constraints
    • Identification of resources
    • Manipulation of Resources through Representations
    • Self-descriptive messages
    • Hypermedia as the Engine of Application State (HATEOAS)
  • Refining the GET Method
    • The GET Method
    • Passing Parameters
    • Anatomy of a URL
    • Path Parameters
    • Path Parameter Examples
    • Query Parameters
    • Query Parameters as Filters
    • Query Parameters for Pagination and Sorting
    • HTTP Status Codes
    • Responses
    • Best Practices HTTP GET
  • REST vs. SOAP
    • Defining REST
    • The Six REST Architectural Style Constraints
    • The Four REST Interface Constraints
    • Hypermedia Examples
    • Defining SOAP
    • RPC SOAP vs. REST
    • Document SOAP vs. REST
    • Where SOAP Shines
    • Where REST Shines
    • Selecting an Appropriate Solution
  • POST PUT PATCH
    • HTTP Methods That Modify/Create Resources
    • POST
    • POST Request Example
    • POST Response Example
    • PUT
    • PUT Example - Update
    • PUT Example - Create
    • PATCH
    • Patch Example - Update
  • Other RESTful Considerations
    • MIME Types
    • Some Common MIME Types
    • Content Headers
    • Content Headers Example
    • Content Issues
    • Content Negotiation
    • API Versioning
    • Versioning Schemes
    • Versioning – URI
    • Issues with URI Versioning
    • Versioning – Accept Header
  • Describing RESTful APIs
    • Describing RESTful APIs
    • History
    • Ad-hoc Interface definitions
    • Modern Choices
    • RAML
    • Build A RAML API Description
    • ROOT
    • List Resources
    • Define Methods
    • Define Query Parameters
    • Enter Responses
    • Open API (Swagger)
    • Swagger Editor
    • Swagger Codegen
    • Swagger UI
    • OpenAPI Service Description
    • Pretty Printed OpenAPI Service Definition
  • Securing REST Services
    • RESTful Security - Ideal Approach
    • RESTful Security - Practical Approach
    • Protecting the QueryString
    • REST and Access IDs
    • AWS and HMAC
    • Securing Resources
    • REST Security Concerns
    • Comprehensive REST Security
  • RESTful Service Lifecycle
    • RESTful API Service Lifecycle
    • Design
    • Conceptualize
    • Feedback
    • Validate
    • Implement
    • Implement
    • Define REST Resources
    • Define REST Data Models
    • Create API Definitions
    • Create Implementation
    • Manage
    • Secure
    • Deploy
    • Monitor
    • Maintain
    • Retire
  • RESTful Service Challenges
    • URLs for GET Requests
    • RFC7230 (HTTP)
    • URLs the Real Story
    • The URL Dilemma
    • Mapping
    • Other
    • Operations
    • A System to Manage Video Games
    • Operations that do map to HTTP Methods
    • Another
    • non-RESTful
    • Operation
    • GET, GET, GET
    • More GET issues
    • The Problem with Embedded Parameters and GET
    • HTTP
  • 10 REST Anti-patterns
    • RESTafarians
    • HATEOS == REST
    • POST and GET
    • Forcing POSTs to be Idempotent
    • Misuse of URI path
    • Not using descriptive HTTP Status Codes
    • Ignoring Caching
    • Cookies
  • REST Best Practices
    • Only use Nouns in URIs
    • Use Sub-Resources
    • Provide Query Parameters for Large Query Results
    • Use MIME-Types in Headers
    • HATEOAS
    • Use HTTP Status Codes
    • Use Error Payloads
  • Lab Exercises
    • Lab 1. Hello REST Service
    • Lab 2. Build a CRUD Service
    • Lab 3. Choose REST or SOAP
    • Lab 4. Queries
    • Lab 5. Using PUT and PATCH
    • Lab 6. Content Negotiation
    • Lab 7. RESTful Services in the Wild
    • Lab 8. Design a Simple API
    • Lab 9. Mapping Other Operations
    • Lab 10. OpenAPI (Swagger)