Building RESTful web services with PHP 7 Lumen, Composer, API testing, microservices, and more

Learn how to build RESTful API and web services in PHP 7 About This Book Leverage the Lumen framework to build RESTful API endpoints for your applications Understand how to increase efficiency and security of your web service. Learn to apply the concepts by implementing the examples covered in the b...

Descripción completa

Detalles Bibliográficos
Otros Autores: Ahmad, Haafiz Waheed-ud-din, author (author)
Formato: Libro electrónico
Idioma:Inglés
Publicado: Birmingham, [England] ; Mumbai, [India] : Packt Publishing 2017.
Edición:1st edition
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009630677806719
Tabla de Contenidos:
  • Cover
  • Copyright
  • Credits
  • About the Author
  • About the Reviewer
  • www.PacktPub.com
  • Customer Feedback
  • Table of Contents
  • Preface
  • Chapter 1: RESTful Web Services, Introduction and Motivation
  • Web services
  • Why a web service?
  • REST architecture
  • Client server
  • Stateless
  • Cache-able
  • Uniform interface
  • Resource identification
  • Manipulation of resources through representations
  • Self-descriptive messages
  • Hypermedia as the engine of application state (HATEOAS)
  • Code on demand (optional)
  • Layered system
  • RESTful web services
  • Conventions of RESTful web services
  • HTTP verbs and URL structure
  • List operation
  • Create operation
  • READ operation
  • Update operation
  • Delete operation
  • Why RESTful web services?
  • REST versus SOAP
  • Nature of HTTP methods
  • Safe/unsafe HTTP methods
  • Idempotent and non-idempotent methods
  • HTTP response
  • Response type
  • Response codes
  • Case study - RESTful web service endpoints for a blog
  • Blog post
  • Requirements
  • Endpoints
  • Creating blog post
  • Reading blog post
  • Updating blog post
  • Delete blog post
  • Listing all blog posts
  • Blog post comments
  • Requirements
  • Endpoints
  • Creating the post's comment
  • Reading a comment
  • Updating a comment
  • Deleting a post comment
  • Listing all comments for a particular post
  • More resources
  • Summary
  • Chapter 2: PHP7, To Code It Better
  • Scalar type declaration
  • Return type declaration
  • Null coalescing operator
  • Spaceship operator
  • Group use declarations
  • Generator-related features
  • What are generators?
  • Generator return expression
  • Generator delegation
  • Anonymous classes
  • Closure::call()
  • Errors and exceptions
  • PHP7.1
  • Nullable types
  • Symmetric array destructuring
  • Support for keys in list()
  • Multi-catch exception handling
  • More resources
  • Summary.
  • Chapter 3: Creating RESTful Endpoints
  • Creating a REST API for a blog in PHP
  • Creating a database schema
  • Blog user/author table schema
  • SQL for users table
  • Blog post table schema
  • Blog post comments schema
  • Creating a RESTful API's endpoint
  • Code structure
  • Common components
  • DB class
  • Router class
  • Code sync
  • Creating blog post endpoints
  • REST client
  • To do
  • Visible flaws
  • Validation
  • Solution
  • Authentication
  • Solution
  • Proper 404 pages
  • Summary
  • Chapter 4: Reviewing Design Flaws and Security Threats
  • Finding problems in the current code
  • Structural and design flaws
  • Missing query builder layer
  • Incomplete router
  • Usage of OOP
  • Separate Configurations from Implementation
  • Should write tests
  • Input validation
  • Handling 404 and other errors
  • Meta information missing
  • DB fields abstraction
  • Security
  • Securing API endpoints
  • What is Auth middleware?
  • Common security threats in RESTful web services
  • Use of HTTPS
  • Securing an API key/token
  • Not passing an access token in the URL
  • Access token expiration
  • Limited scope access token
  • Public and private endpoints
  • Public API endpoints
  • Insecure direct object reference
  • Restricting allowable verbs
  • Input validation
  • Available reusable code
  • Summary
  • Chapter 5: Load and Resolve with Composer, an Evolutionary
  • Introduction to Composer
  • Installation
  • Installation on Windows
  • Installation on Linux/Unix/OS X
  • Global Installation
  • Usage of Composer
  • Composer as a dependency manager
  • Installing packages
  • Installing using composer.json
  • The composer.json in detail
  • The require object
  • The require-dev object
  • The autoload and autoload-dev
  • The scripts
  • The composer.lock
  • Composer as an auto-loader
  • Example
  • Composer for creating a project
  • Example
  • Summary.
  • Chapter 6: Illuminating RESTful Web Services with Lumen
  • Introducing Lumen
  • Why micro-framework?
  • Why Lumen?
  • What Lumen provides
  • What Lumen has in common with Laravel
  • How Lumen is different from Laravel
  • What exactly Lumen provides
  • A Good Structure
  • Separate configurations
  • Router
  • Middle-wares
  • Service Container and Dependency Injection
  • HTTP responses
  • Validation
  • Eloquent ORM
  • Database migration and seeding
  • Unit testing
  • Installing Lumen
  • Configuration
  • Setting up the database
  • Writing migrations
  • Writing RESTful web service endpoints
  • Writing the first controller
  • Lumen routes
  • REST resource
  • Eloquent ORM (model layer)
  • Creating models
  • Eloquent relationships
  • Controller Implementation
  • What we are missing?
  • Validation and negative cases?
  • /api/posts with GET method
  • /api/posts with the POST method
  • /api/posts/1 with the GET method
  • /api/posts/1 with the PATCH/PUT method
  • /api/posts/1 with the DELETE method
  • User authentication
  • Other missing elements
  • Comment Resource Implementation
  • Summary
  • Chapter 7: Improving RESTful Web Services
  • Dingo, simplifying RESTful API development
  • Installation and configuration
  • Simplifying routes
  • API versioning
  • Rate limiting
  • Internal requests
  • Responses
  • Authentication and middleware
  • JWT Auth setup
  • The Manual way
  • Simpler way through Lumen JWT authentication integration package
  • Authentication
  • Log in
  • Invalidate token
  • Refresh token
  • Transformers
  • Understanding and setting transformers
  • Using transformers
  • Encryption
  • SSL certificate, different options
  • Summary
  • Chapter 8: API Testing &amp
  • #x2013
  • Guards on the Gates
  • The need for automated tests
  • Types of testing
  • Unit testing
  • Acceptance testing
  • Functional testing
  • Integration testing.
  • What type of testing will we do?
  • Testing frameworks
  • CodeCeption introduction
  • Setup and understanding the structure
  • tests/{suite-name}/
  • tests/{suite-name}.suite.yml
  • tests/_support/_generated/{suite-name}TesterActions.php
  • tests/_support/{suite-name}Tester.php
  • tests/_support/Helper/{suite-name}.php
  • Creating the API suite
  • Configuring the API suite
  • Writing test cases
  • API tests for post resource
  • Other test cases
  • Summary
  • More resources
  • Chapter 9: Microservices
  • Introducing Microservices
  • How to divide an application into microservices?
  • Motivation towards microservices
  • Maintenance and debugging
  • Scalability
  • Technology diversity
  • Resilience
  • Replaceability
  • Parallelization
  • How it is different from SOA
  • Team structure
  • Challenges of micro-services
  • Infrastructure maintenance
  • Performance
  • Debugging and fault-finding
  • Logs should be centralized
  • Logs should be searchable
  • Track chain of requests
  • Dynamic log levels
  • Implementation
  • Deployments
  • Inter-services communication
  • Synchronous communication
  • Asynchronous communication
  • Shared library or common code
  • Summary
  • What's next
  • Index.