Building a RESTful Web Service with Spring - Ludovic Dewailly - E-Book

Building a RESTful Web Service with Spring E-Book

Ludovic Dewailly

0,0
23,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

REST is an architectural style that tackles the challenges of building scalable web services. In today’s connected world, APIs have taken a central role on the web. APIs provide the fabric through which systems interact, and REST has become synonymous with APIs.
The depth, breadth, and ease of use of Spring makes it one of the most attractive frameworks in the Java ecosystem. Marrying the two technologies is therefore a very natural choice.
This book takes you through the design of RESTful web services and leverages the Spring Framework to implement these services. Starting from the basics of the philosophy behind REST, you’ll go through the steps of designing and implementing an enterprise-grade RESTful web service. Taking a practical approach, each chapter provides code samples that you can apply to your own circumstances.
This book goes beyond the use of Spring and explores approaches to tackle resilience, security, and scalability concerns. You’ll learn techniques to deal with security in Spring and discover how to implement unit and integration test strategies.
Finally, the book ends by walking you through building a Java client for your RESTful web service, along with some scaling techniques for it.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 127

Veröffentlichungsjahr: 2015

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

Building a RESTful Web Service with Spring
Credits
About the Author
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. A Few Basics
REST principles
Uniform interface
Client-Server
Stateless
Cacheable
Layered system
Code on demand
The Spring Framework and REST
Our RESTful web service
Architecture
Data model
Summary
2. Building RESTful Web Services with Maven and Gradle
Apache Maven
Dependency management in Apache Maven
Gradle
Dependency management in Gradle
The structure of our sample web service
The anatomy of a Service Module
Local versus Remote Service Invocations
Developing RESTful web services
Working with your favorite IDE
Making services executable
Starting services with Maven
Summary
3. The First Endpoint
The Inventory service
REST and the MVC pattern
Request mapping
Path mapping
HTTP method mapping
Request parameter mapping
Running the service
A few words on data representation
Summary
4. Data Representation
The Data-Transfer-Object design pattern
The API response format
The envelope format
Error management
Pagination support
Customizing JSON responses
API evolutions
HATEOAS
Versioning strategies
URI versioning
Representation versioning
Other approaches
Summary
5. CRUD Operations in REST
Mapping CRUD operations to HTTP methods
Creating resources
Quickly testing endpoints
JSON versus form data
Updating resources
The update endpoint
Testing update requests
Deleting resources
Overriding the HTTP method
Summary
6. Performance
HTTP compression
Content negotiation
gzip or deflate?
gzip compression in RESTful web services
Spring Boot
HTTP caching
Cache-Control
Private/Public caching
No caching
ETags
Last-Modified/If-Modified-Since headers
Room availability
An overview of implementation
The REST resource
Adding HTTP caching
Caching with ETags
Summary
7. Dealing with Security
The booking service
The REST resource
Authentication
HTTP Basic authentication
Using Basic authentication with Spring
HTTP Digest authentication
Token-based authentication
Other authentication methods
Authorization
Authorization with Spring
URL mapping
Resource annotations
Input validation
Java Bean annotations
Regular expressions
Validating bookings
Encryption
Storing sensitive data
Summary
8. Testing RESTful Web Services
Unit testing Spring controllers
Mocking
Simple mocking
Implementation stubbing with a mocking library
Mockito and Spring
Testing security
Integration testing
Continuous delivery
Integration tests with Spring Boot
Postman
Postman and security
Other forms of testing
User Acceptance Testing
Load testing
Summary
9. Building a REST Client
The basic setup
Declaring a client
Remote versus local clients
Availability and booking services
Handling security
The Basic authentication
The Digest authentication
HTTP public key pinning
Exception handling
Summary
10. Scaling a RESTful Web Service
Clustering
Scaling up versus scaling out
The benefits of clustered systems
Load balancing
Linear scalability
Distributed caching
Data-tier caching
First-level caching
Second-level caching
Application-tier caching
Asynchronous communication
Summary
Index

Building a RESTful Web Service with Spring

Building a RESTful Web Service with Spring

Copyright © 2015 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: October 2015

Production reference: 1081015

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK.

ISBN 978-1-78528-571-4

www.packtpub.com

Credits

Author

Ludovic Dewailly

Reviewers

Fabricio Silva Epaminondas

Greg L. Turnquist

Commissioning Editor

Pratik Shah

Acquisition Editor

Ruchita Bhansali

Content Development Editor

Nikhil Potdukhe

Technical Editor

Menza Mathew

Copy Editor

Angad Singh

Project Coordinator

Izzat Contractor

Proofreader

Safis Editing

Indexer

Rekha Nair

Production Coordinator

Aparna Bhagat

Cover Work

Aparna Bhagat

About the Author

Ludovic Dewailly is a senior, hands-on software engineer and development manager with over 12 years of experience in designing and building software solutions on platforms ranging from resource-constrained mobile devices to cloud-computing systems. He is currently helping FancyGiving.com (a social shopping, wishing, and gifting platform) design and build their system. Ludovic's interests lie in software architecture and tackling the challenges of web scale.

I would like to thank my fiancée, Gaia, for helping me find the time to work on this book, and for dealing with my testiness after late-night writing sessions. I would also like to thank Neil Emerick from NightsBridge (http://www.nightsbridge.co.za) for providing me with the idea and concepts behind the sample RESTful web service that outlines this book.

Also, I would like to give gratitude to Chris Laffra and Michael Van Meekeren from the defunct Object Technology International, who gave me my first taste of commercial software development.

Finally, I wish to thank Nikhil Potdukhe and Menza Mathew from Packt Publishing for guiding me and helping me convert the original concept of this project into an actual book.

About the Reviewers

Fabricio Silva Epaminondas has a degree in computer science and a solid background in software development, testing, and engineering. He has been an agile and quality enthusiast for more than 10 years with working experience in the field, having held several roles in fields ranging from project management to software architecture and team leadership.

Fabricio has also worked with mobile, web, and cloud technologies for research institutes and big companies in Brazil and other countries. There, he developed fast and scalable software solutions in the segments of e-commerce, enterprise integration, corporate governance, and innovative solutions.

Fabricio is the technical author of the blog, fabricioepa.wordpress.com. You can find out more about his professional profile at br.linkedin.com/in/fabricioepa.

I would like to thank my blessed wife, Buna Suellen, who fully supported me during the production of this book.

Greg L. Turnquist (@gregturn) has developed software professionally since 1997. From 2002-2010, he was the lead developer for Harris's $3.5 billion FAA telecommunications program, architecting mission-critical enterprise apps while managing a software team.

In 2010, he joined the Spring team that is now a key part of the start-up company, Pivotal. As a test-bitten script junky, Spring Pro, and JavaScript padawan, Greg works on the Spring Data team while also running the Nashville JUG.

In 2014, he wrote his most recent technical book, Learning Spring Boot, for Packt Publishing. He is passionate about application development, writing (fiction and non-fiction), and coffee.

You can read his blog at http://blog.GregLTurnquist.com, and also sign up for his newsletter.

www.PacktPub.com

Support files, eBooks, discount offers, and more

For support files and downloads related to your book, please visit www.PacktPub.com.

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

https://www2.packtpub.com/books/subscription/packtlib

Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.

Why subscribe?

Fully searchable across every book published by PacktCopy and paste, print, and bookmark contentOn demand and accessible via a web browser

Free access for Packt account holders

If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view 9 entirely free books. Simply use your login credentials for immediate access.

Preface

In today's connected world, APIs have taken a central role on the Web. They provide the fabric on which systems interact with each other. And REST has become synonymous with APIs. REpresentational State Transfer, or REST, is an architectural style that lends itself well to tackling the challenges of building scalable web services.

In the Java ecosystem, the Spring Framework is the application framework of choice. It provides a comprehensive programming and configuration model that takes away the "plumbing" of enterprise applications.

It will, therefore, come as no surprise that Spring provides an ideal framework for building RESTful web services. In this book, we will take a hands-on look at how to build an enterprise-grade RESTful web service with the Spring Framework. As an underlying theme, we will illustrate the concepts in each chapter with the implementation of a sample web service that deals with managing rooms in a hotel.

By the end of this book, readers will be equipped with the necessary techniques to create a RESTful web service and sufficient knowledge to scale and secure their web service to meet production readiness requirements.

What this book covers

Chapter 1, A Few Basics, discusses the REST architecture approach and its underlying principles.

Chapter 2, Let's Get Started, enables us to put the scaffolding together, before building a RESTful web service.

Chapter 3, Building RESTful Web Services with Maven and Gradle, looks at the building blocks of creating RESTful endpoints.

Chapter 4, Data Representation, discusses how to manage data representation before we proceed further with building more endpoints. This chapter also offers advice on creating common response formats and error handling.

Chapter 5, CRUD Operations in REST, expands on the previous chapters and takes a look at how you can map CRUD operations to RESTful endpoints.

Chapter 6, Performance, explains that for a web service to be production-ready, it needs to be performant. This chapter discusses performance optimization techniques.

Chapter 7, Dealing with Security, looks at how to ensure a web service is secure by delving into steps that designers need to take. This chapter looks at how to deal with authentication and authorization, as well as input validation techniques.

Chapter 8, Testing Restful Web Services, looks at how to guarantee that a web service delivers the expected functionality, and the testing strategies that designers need to consider. This chapter offers readers the approaches for creating comprehensive test plans.

Chapter 9, Building a REST Client, tells us how for a web service to be of any use, it must be consumed. This penultimate chapter focuses on how to build a client for RESTful web services.

Chapter 10, Scaling a Restful Web Service, explains that scalability is a vast topic and encompasses many aspects. In this last chapter, we discuss what API designers can put in place to help the scaling of their service.

What you need for this book

Readers will need the version 8 of the Java Development Kit (JDK) and Apache Maven to build the code samples in this book. In addition, readers who wish to delve into creating their own service, or simply look at the code samples in more detail, should equip themselves with their preferred IDE.

Who this book is for

This book is intended for those who want to learn to create RESTful web services with the Spring Framework. It goes beyond the use of Spring and explores approaches to tackling resilience, security, and scalability concerns that will prove useful to any service designer. To make the best use of the code samples included in this book, readers should have basic knowledge of the Java language. Any previous experience with the Spring Framework would also help in getting up and running quickly.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of.

To send us general feedback, simply e-mail <[email protected]>, and mention the book's title in the subject of your message.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the example code

You can download the example code files from your account at http://www.packtpub.com for all the Packt Publishing books you have purchased. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you could report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website or added to any list of existing errata under the Errata section of that title.

To view the previously submitted errata, go to https://www.packtpub.com/books/content/support and enter the name of the book in the search field. The required information will appear under the Errata section.

Piracy