Book Image

Building a RESTful Web Service with Spring

By : Ludovic Dewailly
Book Image

Building a RESTful Web Service with Spring

By: Ludovic Dewailly

Overview of this book

Table of Contents (17 chapters)
Building a RESTful Web Service with Spring
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Index

A

  • Aerospike
    • URL / Application-tier caching
  • Apache ActiveMQ
    • URL / Asynchronous communication
  • Apache Maven
    • about / Apache Maven
    • URL / Apache Maven
    • dependency management / Dependency management in Apache Maven
    • Central Repository, URL / Dependency management in Apache Maven
  • API evolutions
    • about / API evolutions
    • HATEOAS / HATEOAS
    • versioning strategies / Versioning strategies
  • API response format
    • about / The API response format
    • envelope format / The envelope format
    • JSON Responses, customizing / Customizing JSON responses
  • application-tier caching
    • Memcached / Application-tier caching
    • Redis / Application-tier caching
    • Hazelcast / Application-tier caching
    • Ehache / Application-tier caching
    • Riak / Application-tier caching
    • Aerospike / Application-tier caching
  • architecture, RESTful web service
    • about / Architecture
    • Inventory Service / Architecture
    • Availability Service / Architecture
    • Booking Service / Architecture
    • Billing Service / Architecture
  • asynchronous communication
    • about / Asynchronous communication
    • database polling / Asynchronous communication
    • Message Oriented Middleware (MOM) / Asynchronous communication
    • asynchronous RESTful API / Asynchronous communication
  • authentication
    • about / Authentication
    • HTTP Basic authentication / HTTP Basic authentication
    • HTTP Digest authentication / HTTP Digest authentication
    • token-based authentication / Token-based authentication
    • methods / Other authentication methods
    • OAuth2 / Other authentication methods
    • JWT / Other authentication methods
  • authorization
    • about / Authorization
    • Spring, using / Authorization with Spring
  • authorization, with Spring
    • URL mapping / URL mapping
    • resource annotations / Resource annotations

B

  • Base64 / HTTP Basic authentication
  • Bcrypt encryption
    • URL / Using Basic authentication with Spring
  • BIG-IP
    • URL / Load balancing
  • booking service
    • about / The booking service
    • REST resource / The REST resource

C

  • Cache-Control
    • about / Cache-Control
    • private/public caching / Private/Public caching
    • no caching / No caching
    • ETags / ETags
    • Last-Modified/If-Modified-Since headers / Last-Modified/If-Modified-Since headers
  • clustered systems, benefits
    • fault tolerance / The benefits of clustered systems
    • High Availability / The benefits of clustered systems
  • clustering
    • about / Clustering
    • scaling up, versus scaling out / Scaling up versus scaling out
    • clustered systems, benefits / The benefits of clustered systems
    • load balancing / Load balancing
    • linear scalability / Linear scalability
  • CONNECT method / Mapping CRUD operations to HTTP methods
  • CRUD operations
    • mapping, to HTTP methods / Mapping CRUD operations to HTTP methods

D

  • <dependencies> element
    • Hibernate / Dependency management in Apache Maven
    • JUnit / Dependency management in Apache Maven
  • data-tier caching
    • about / Data-tier caching
    • first-level caching / First-level caching
    • second-level caching / Second-level caching
  • Data-Transfer-Object design pattern
    • about / The Data-Transfer-Object design pattern
    • URL / The Data-Transfer-Object design pattern
  • data model
    • about / Data model
    • room / Data model
    • RoomCategory / Data model
    • pricing / Data model
    • booking / Data model
    • invoice / Data model
  • data representation
    • about / A few words on data representation
  • Data Transfer Object (DTO) pattern / REST and the MVC pattern
  • deflate format / Content negotiation
  • DELETE method / Mapping CRUD operations to HTTP methods
  • distributed caching
    • about / Distributed caching
    • data-tier caching / Data-tier caching
    • application-tier caching / Application-tier caching

E

  • EasyMock
    • URL / Implementation stubbing with a mocking library
  • Ehache
    • URL / Application-tier caching
  • Ehcache
    • URL / Second-level caching
  • encryption
    • about / Encryption
    • sensitive data, storing / Storing sensitive data
  • envelope format
    • about / The envelope format
    • error management / Error management
    • pagination support / Pagination support
  • ETags / ETags
  • exception handling / Exception handling

G

  • GET method / Mapping CRUD operations to HTTP methods
  • Gradle
    • about / Gradle
    • URL / Gradle
    • dependency management / Dependency management in Gradle
  • Groovy-based declarative syntax / Gradle
  • GZIP compression, in RESTful web services
    • about / gzip compression in RESTful web services
    • Spring Boot / Spring Boot
  • gzip format / Content negotiation

H

  • H2
    • URL / Data model
  • HAProxy
    • URL / Load balancing
  • Hazelcast
    • URL / Application-tier caching
  • HEAD method / Mapping CRUD operations to HTTP methods
  • Hibernate / Data-tier caching
  • Hibernate.org
    • URL / Data model
  • HTTP Basic authentication
    • about / HTTP Basic authentication
    • using, with Spring / Using Basic authentication with Spring
  • HTTP caching
    • about / HTTP caching
    • Cache-Control directives / Cache-Control
  • HttpClient
    • URL / The Digest authentication
  • HTTP compression
    • about / HTTP compression
    • content negotiation / Content negotiation
    • gzip data format / gzip or deflate?
    • deflate format / gzip or deflate?
    • GZIP compression, in RESTful web services / gzip compression in RESTful web services
  • HTTP Digest authentication
    • about / HTTP Digest authentication
    • URL / HTTP Digest authentication
  • HTTP method mapping / HTTP method mapping
  • HTTP methods
    • CRUD operations, mapping to / Mapping CRUD operations to HTTP methods
    • OPTIONS / Mapping CRUD operations to HTTP methods
    • GET / Mapping CRUD operations to HTTP methods
    • HEAD / Mapping CRUD operations to HTTP methods
    • POST / Mapping CRUD operations to HTTP methods
    • PUT / Mapping CRUD operations to HTTP methods
    • DELETE / Mapping CRUD operations to HTTP methods
    • TRACE / Mapping CRUD operations to HTTP methods
    • CONNECT / Mapping CRUD operations to HTTP methods
    • overriding / Overriding the HTTP method
  • HTTP public key pinning (HPKP)
    • about / HTTP public key pinning
    • URL / HTTP public key pinning
  • HTTPS / Encryption
  • Hypermedia as the Engine of Application State (HATEOAS) / Uniform interface, API evolutions

I

  • IDEs / Working with your favorite IDE
  • input validation
    • about / Input validation
    • Java Bean annotations / Java Bean annotations
  • integration testing
    • about / Integration testing
    • continuous delivery / Continuous delivery
    • using, with Spring Boot / Integration tests with Spring Boot
    • Postman / Postman
  • IntelliJ IDEA / Working with your favorite IDE
  • Inventory service
    • about / The Inventory service
    • running / Running the service
  • ISO 8601 format
    • URL / The REST resource

J

  • Java Bean annotations
    • about / Java Bean annotations
    • regular expressions / Regular expressions
    • bookings, validating / Validating bookings
  • Javadoc
    • URL / Customizing JSON responses
  • Java new stream API
    • URL / Request parameter mapping
  • Java Persistence API (JPA)
    • about / The Inventory service
    • URL / The Inventory service
  • JBoss Cache
    • URL / Second-level caching
  • jMock
    • URL / Implementation stubbing with a mocking library
  • JSON
    • XML / Uniform interface
  • Junit
    • URL / Unit testing Spring controllers
  • JWT
    • about / Other authentication methods
    • URL / Other authentication methods

L

  • load testing / Load testing

M

  • Maven modules
    • common / The structure of our sample web service
    • inventory / The structure of our sample web service
    • availability / The structure of our sample web service
    • booking / The structure of our sample web service
    • billing / The structure of our sample web service
    • all / The structure of our sample web service
    • URL / The structure of our sample web service
  • MD5 hash / HTTP Digest authentication
  • Memcached
    • URL / Application-tier caching
  • Microservice architectures
    • URL / Remote versus local clients
  • mocking
    • about / Mocking
    • simple mocking / Simple mocking
  • mocking library
    • implementation stubbing / Implementation stubbing with a mocking library
  • Mockito
    • about / Implementation stubbing with a mocking library
    • using, with Spring / Mockito and Spring
    • URL / Mockito and Spring
  • Model View Controller pattern
    • about / REST and the MVC pattern
    • and REST / REST and the MVC pattern
    • request mapping / Request mapping
    • path mapping / Path mapping
    • HTTP method mapping / HTTP method mapping
    • request parameter mapping / Request parameter mapping

O

  • OAuth2
    • about / Other authentication methods
    • URL / Other authentication methods
  • Object-Relational Mapping (ORM) / Data model
  • OPTIONS method / Mapping CRUD operations to HTTP methods
  • OSCache
    • URL / Second-level caching

P

  • path mapping / Path mapping
  • Postman
    • URL / Postman
    • about / Postman
    • security / Postman and security
  • POST method / Mapping CRUD operations to HTTP methods
  • Pragma header / No caching
  • Project Object Model (POM) / Apache Maven
  • PUT method / Mapping CRUD operations to HTTP methods

R

  • RabbitMQ
    • URL / Asynchronous communication
  • Redis
    • URL / Application-tier caching
  • remote, versus local clients
    • about / Remote versus local clients
    • availability service / Availability and booking services
    • booking service / Availability and booking services
  • request mapping / Request mapping
  • request parameter mapping / Request parameter mapping
  • resources
    • creating / Creating resources
    • endpoints, testing / Quickly testing endpoints
    • JSON, versus form data / JSON versus form data
    • updating / Updating resources
    • endpoint, updating / The update endpoint
    • update requests, testing / Testing update requests
    • deleting / Deleting resources
  • REST
    • about / REST principles
    • principles / REST principles
    • XML / Uniform interface
    • and Model View Controller pattern / REST and the MVC pattern
  • REST Client
    • setup / The basic setup
  • REST Client setup
    • about / The basic setup
    • client, declaring / Declaring a client
  • RESTful API / Our RESTful web service
  • RESTful web service
    • about / Our RESTful web service
    • architecture / Architecture
    • data model / Data model
  • RESTful web services
    • developing / Developing RESTful web services
    • favorite IDE, working from / Working with your favorite IDE
    • making executable / Making services executable
    • starting, with Maven / Starting services with Maven
  • REST principles
    • about / REST principles
    • uniform interface / Uniform interface
    • client/server model / Client-Server
    • stateless / Stateless
    • cacheable / Cacheable
    • layered system / Layered system
    • code on demand / Code on demand
    • and Spring Framework / The Spring Framework and REST
  • Riak
    • URL / Application-tier caching
  • room availability service
    • about / Room availability
    • implementation overview / An overview of implementation
    • REST resource / The REST resource
    • HTTP caching, adding / Adding HTTP caching
    • caching, with ETags / Caching with ETags
  • RoomController / REST and the MVC pattern

S

  • sample web service
    • structure / The structure of our sample web service
    • Service Module, anatomy / The anatomy of a Service Module
  • second-level caching
    • about / Second-level caching
    • Ehcache / Second-level caching
    • OSCache / Second-level caching
    • JBoss Cache / Second-level caching
  • security
    • testing / Testing security
    • handling / Handling security
  • security, handling
    • Basic authentication / The Basic authentication
    • Digest authentication / The Digest authentication
    • HTTP public key pinning (HPKP) / HTTP public key pinning
  • Service Level Agreements (SLAs) / Load testing
  • Service Module
    • anatomy / The anatomy of a Service Module
    • local, versus remote service invocations / Local versus Remote Service Invocations
  • Spring
    • used, for authorization / Authorization with Spring
    • using,with Mockito / Mockito and Spring
  • Spring Boot
    • URL / Making services executable
    • using, with integration testing / Integration tests with Spring Boot
  • Spring controllers
    • unit testing / Unit testing Spring controllers
  • Spring Framework
    • about / The Spring Framework and REST
    • and REST principles / The Spring Framework and REST
  • Spring Web MVC
    • URL / The Spring Framework and REST
  • Subject Public Key Information (SPKI) / HTTP public key pinning

T

  • testing
    • types / Other forms of testing
    • User Acceptance Testing (UAT) / User Acceptance Testing
    • load testing / Load testing
  • token-based authentication
    • about / Token-based authentication
  • Tomcat instance / Running the service
  • TRACE method / Mapping CRUD operations to HTTP methods
  • Trust on First Use security technique / HTTP public key pinning

U

  • Uniform Resource Identifiers (URIs) / Uniform interface
  • UNIX times
    • URL / The REST resource
  • URI / Mapping CRUD operations to HTTP methods
  • User Acceptance Testing (UAT) / User Acceptance Testing

V

  • Value-Object design pattern / The Data-Transfer-Object design pattern
  • versioning strategies
    • about / Versioning strategies
    • URI versioning / URI versioning
    • representation versioning / Representation versioning
    • other approaches / Other approaches