售 价:¥
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
RESTful Java Web Services Second Edition
Table of Contents
RESTful Java Web Services Second Edition
Credits
About the Author
Acknowledgments
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Introducing the REST Architectural Style
The REST architectural style
Introducing HTTP
HTTP versions
Understanding the HTTP request-response model
Uniform resource identifier
Understanding the HTTP request methods
Representing content types using HTTP header fields
HTTP status codes
The evolution of RESTful web services
The core architectural elements of a RESTful system
Resources
URI
The representation of resources
Generic interaction semantics for REST resources
The HTTP GET method
The HTTP POST method
The HTTP PUT method
The HTTP DELETE method
Hypermedia as the Engine of Application State
Description and discovery of RESTful web services
Java tools and frameworks for building RESTful web services
Summary
2. Java APIs for JSON Processing
A brief overview of JSON
Understanding the JSON data syntax
Basic data types available with JSON
A sample JSON file representing employee objects
Processing JSON data
Using JSR 353 – Java API for processing JSON
Processing JSON with JSR 353 object model APIs
Generating the object model from the JSON representation
Generating the JSON representation from the object model
Processing JSON with JSR 353 streaming APIs
Using streaming APIs to parse JSON data
Using streaming APIs to generate JSON
Using the Jackson API for processing JSON
Processing JSON with Jackson tree model APIs
Using Jackson tree model APIs to query and update data
Processing JSON with Jackson data binding APIs
Simple Jackson data binding with generalized objects
Full Jackson data binding with specialized objects
Processing JSON with Jackson streaming APIs
Using Jackson streaming APIs to parse JSON data
Using Jackson streaming APIs to generate JSON
Using the Gson API for processing JSON
Processing JSON with object model APIs in Gson
Generating the object model from the JSON representation
Generating the parameterized Java collection from the JSON representation
Generating the JSON representation from the object model
Processing JSON with Gson streaming APIs
Reading JSON data with Gson streaming APIs
Writing JSON data with Gson streaming APIs
Summary
3. Introducing the JAX-RS API
An overview of JAX-RS
JAX-RS annotations
Specifying the dependency of the JAX-RS API
Using JAX-RS annotations to build RESTful web services
Annotations for defining a RESTful resource
@Path
Specifying the @Path annotation on a resource class
Specifying the @Path annotation on a resource class method
Specifying variables in the URI path template
Restricting values for path variables with regular expressions
Annotations for specifying request-response media types
@Produces
@Consumes
Annotations for processing HTTP request methods
@GET
@PUT
@POST
@DELETE
@HEAD
@OPTIONS
Annotations for accessing request parameters
@PathParam
@QueryParam
@MatrixParam
@HeaderParam
@CookieParam
@FormParam
@DefaultValue
@Context
@BeanParam
@Encoded
Returning additional metadata with responses
Understanding data binding rules in JAX-RS
Mapping the path variable with Java types
Mapping the request and response entity body with Java types
Using JAXB to manage the mapping of the request and response entity body to Java objects
Building your first RESTful web service with JAX-RS
Setting up the environment
Building a simple RESTful web service application using NetBeans IDE
Adding CRUD operations on the REST resource class
Client APIs for accessing RESTful web services
Specifying a dependency of the JAX-RS client API
Calling REST APIs using the JAX-RS client
Simplified client APIs for accessing REST APIs
Summary
4. Advanced Features in the JAX-RS API
Understanding subresources and subresource locators in JAX-RS
Subresources in JAX-RS
Subresource locators in JAX-RS
Exception handling in JAX-RS
Reporting errors using ResponseBuilder
Reporting errors using WebApplicationException
Reporting errors using application exceptions
Mapping exceptions to a response message using ExceptionMapper
Introducing validations in JAX-RS applications
A brief introduction to Bean Validation
Building custom validation constraints
What happens when Bean Validation fails in a JAX-RS application?
Supporting custom request-response message formats
Building a custom entity provider
Marshalling Java objects to the CSV representation with MessageBodyWriter
Marshalling CSV representation to Java objects with MessageBodyReader
Asynchronous RESTful web services
Asynchronous RESTful web service client
Managing HTTP cache in a RESTful web service
Using the Expires header to control the validity of the HTTP cache
Using Cache-Control directives to manage the HTTP cache
Conditional request processing with the Last-Modified HTTP response header
Conditional request processing with the ETag HTTP response header
Conditional data update in RESTFul web services
Understanding filters and interceptors in JAX-RS
Modifying request and response parameters with JAX-RS filters
Implementing server-side request message filters
Postmatching server-side request message filters
Prematching server-side request message filters
Implementing server-side response message filters
Implementing client-side request message filters
Implementing client-side response message filters
Modifying request and response message bodies with JAX-RS interceptors
Implementing request message body interceptors
Implementing response message body interceptors
Managing the order of execution for filters and interceptors
Selectively applying filters and interceptors on REST resources by using @NameBinding
Dynamically applying filters and interceptors on REST resources using DynamicFeature
Understanding the JAX-RS resource lifecycle
Summary
5. Introducing the Jersey Framework Extensions
Specifying dependencies for Jersey
Programmatically configuring JAX-RS resources during deployment
A quick look at the static resource configurations
Modifying JAX-RS resources during deployment using ModelProcessor
What is Jersey ModelProcessor and how does it work?
A brief look at the ModelProcessor interface
Building Hypermedia as the Engine of Application State (HATEOAS) APIs
Formats for specifying JSON REST API hypermedia links
Programmatically building entity body links using JAX-RS APIs
Programmatically building header links using JAX-RS APIs
Declaratively building links using Jersey annotations
Specifying the dependency to use Jersey declarative linking
Enable Jersey declarative linking feature for the application
Declaratively adding links to resource representation
Grouping multiple links using @InjectLinks
Declaratively building HTTP link headers using @InjectLinks
Reading and writing binary large objects using Jersey APIs
Building RESTful web service for storing images
Building RESTful web service for reading images
Generating chunked output using Jersey APIs
Jersey client API for reading chunked input
Supporting Server Sent Event in RESTful web services
Understanding the Jersey server-side configuration properties
Monitoring RESTful web services using Jersey APIs
Summary
6. Securing RESTful Web Services
Securing and authenticating web services
HTTP basic authentication
Building JAX-RS clients with basic authentication
Securing JAX-RS services with basic authentication
Configuring JAX-RS application for basic authentication
Defining groups and users in the GlassFish server
HTTP digest authentication
Securing RESTful web services with OAuth
Understanding the OAuth 1.0 protocol
Building the OAuth 1.0 client using Jersey APIs
Understanding the OAuth 2.0 protocol
Understanding the grant types in OAuth 2.0
Building the OAuth 2.0 client using Jersey APIs
Authorizing the RESTful web service accesses via the security APIs
Using SecurityContext APIs to control access
Using the javax.annotation.security annotations to control access with the Jersey framework
Using Jersey's role-based entity data filtering
Input validation
Summary
7. The Description and Discovery of RESTful Web Services
Introduction to RESTful web services
Web Application Description Language
An overview of the WADL structure
Generating WADL from JAX-RS
Generating the Java client from WADL
Market adoption of WADL
RESTful API Modeling Language
An overview of the RAML structure
Generating RAML from JAX-RS
Generating RAML from JAX-RS via CLI
Generating JAX-RS from RAML
Generating JAX-RS from RAML via CLI
A glance at the market adoption of RAML
Swagger
A quick overview of Swagger's structure
An overview of Swagger APIs
Generating Swagger from JAX-RS
Specifying dependency to Swagger
Configuring the Swagger definition
Adding Swagger annotations on a JAX-RS resource class
Generating Java client from Swagger
A glance at the market adoption of Swagger
Revisiting the features offered in WADL, RAML, and Swagger
Summary
8. RESTful API Design Guidelines
Identifying resources in a problem domain
Transforming operations to HTTP methods
Understanding the difference between PUT and POST
Naming RESTful web resources
Fine-grained and coarse-grained resource APIs
Using header parameter for content negotiation
Multilingual RESTful web API resources
Representing date and time in RESTful web resources
Implementing partial response
Implementing partial update
Returning modified resources to the caller
Paging resource collection
Implementing search and sort operations
Using HATEOAS in response representation
Hypertext Application Language
RFC 5988 – Web Linking
Versioning RESTful web APIs
Including the version in resource URI – the URI versioning
Including the version in a custom HTTP request header – HTTP header versioning
Including the version in a HTTP Accept header – the media type versioning
Hybrid approach for versioning APIs
Caching RESTful web API results
HTTP Cache-Control directive
HTTP conditional requests
Using HTTP status codes in RESTful web APIs
Overriding HTTP methods
Documenting RESTful web APIs
Asynchronous execution of RESTful web APIs
Microservice architecture style for RESTful web applications
Using Open Data Protocol with RESTful web APIs
A quick look at OData
URI convention for OData-based REST APIs
Reading resources
Querying data
Modifying data
Relationship operations
Summary
A. Useful Features and Techniques
Tools for building a JAX-RS application
Integration testing of JAX-RS resources with Arquillian
Adding Arquillian dependencies to the Maven-based project
Configuring the container for running tests
Adding Arquillian test classes to the project
Running Arquillian tests
Implementing PATCH support in JAX-RS resources
Defining the @PATCH annotation
Defining a resource method to handle HTTP PATCH requests
Using third-party entity provider frameworks with Jersey
Transforming the JPA model in to OData-enabled RESTful web services
Packaging and deploying JAX-RS applications
Packaging JAX-RS applications with an Application subclass
Packaging the JAX-RS applications with web.xml and an Application subclass
Configuring web.xml for a servlet 2.x container
Configuring web.xml for a Servlet 3.x container
Packaging the JAX-RS applications with web.xml and without an Application subclass
Configuring web.xml for the servlet 2.x container
Configuring web.xml for the servlet 3.x container
Summary
Index
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜