CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

16 April, 2022

API Version Control in Laravel

 Programing Coderfunda     April 16, 2022     Laravel, Packages     No comments   

API Version Control is a package by Reindert Vetter designed to manage versions of API endpoints elegantly.

This package provides a configuration file where you define the releases and the version capabilities. Later, you can use things like version statements to determine the capabilities of specific versions of your API:

1'releases' => [
2 'GET/orders' => [
3 '<=1.0' => [
4 PrepareParameterException::class,
5 ],
6 ],
7 '(POST|PUT)/orders' => [
8 '<=2.0' => [
9 ThrowCustomException::class,
10 ValidateZipCode::class,
11 ],
12 '<=1.0' => [
13 PrepareParameterException::class,
14 ],
15 ],
16],

This package has two ways to manage the versions of your API endpoints, using the following techniques:

  1. Version statement
  2. Version middleware

Version statements include classes that mix in the VersionStatement trait. Thus you can determine if the API code is to be executed without checking a particular version of the API everywhere in your code:

1// Instead of version checks everywhere...
2if (RequestVersion::isAtLeast('2.0')) {
3 // ...
4}
5 
6// A VersionStatement class instead based on version
7if (ValidateZipCode::permitted()) {
8 // ...
9}

Here's an example of the ValidateZipCode class from the README:

1namespace App\VersionControl\Orders;
2 
3use ReindertVetter\ApiVersionControl\Concerns\VersionStatement;
4 
5class ValidateZipCode
6{
7 use VersionStatement;
8}

Version middleware takes it a step further, processing all requests and responses different from the latest version in a middleware:

1use Closure;
2use Illuminate\Http\Request;
3 
4class PrepareParameterException
5{
6 /**
7 * @param $request
8 * @param \Closure $next
9 * @return mixed
10 */
11 public function handle(Request $request, Closure $next)
12 {
13 // Set the default parameter because it is required in a newer version.
14 $request->query->set('sort', 'DESC');
15 
16 /** @var \Illuminate\Http\Response $response */
17 $response = $next($request);
18 
19 return $response;
20 }
21}

You can learn more about this package, get full installation instructions, and view the source code on GitHub.

  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook

Related Posts:

  • Filament Markdown Editor Filament Markdown Editor is a markdown editor for the excellent Filament admin panel. You can quickly install this package and get mar… Read More
  • User Notifications in Livewire with Megaphone Megaphone is a Livewire UI for Laravel-based user notifications. It uses built-in Laravel notification features to allow you to add bell ic… Read More
  • Laravel Notification Event Subscriber Package Laravel Notification Event Subscriber is a simple package that registers an event subscriber to make it easy to run code while sending… Read More
  • Meilitools offers advanced Meilisearch index features in Laravel Scout Laravel Meilitools provides additional tools for Laravel Scout 9+ integration with MeiliSearch. This package aims to open the possibil… Read More
  • Dynamically Create and Destroy Servers with this Laravel Package Laravel Dynamic Servers is a package by Spatie that helps you start and stop servers when needed. The primary use case is creating ext… Read More
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Sitaare Zameen Par Full Movie Review
     Here’s a  complete Vue.js tutorial for beginners to master level , structured in a progressive and simple way. It covers all essential topi...
  • Credit card validation in laravel
      Validation rules for credit card using laravel-validation-rules/credit-card package in laravel Install package laravel-validation-rules/cr...
  • AI foot tracking model
    I am a student doing a graduation project. I urgently need to deal with this model (I am attaching a link). I've never worked with pytho...
  • Write API Integrations in Laravel and PHP Projects with Saloon
    Write API Integrations in Laravel and PHP Projects with Saloon Saloon  is a Laravel/PHP package that allows you to write your API integratio...
  • iOS 17 Force Screen Rotation not working on iPAD only
    I have followed all the links on Google and StackOverFlow, unfortunately, I could not find any reliable solution Specifically for iPad devic...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (69)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • July (4)
  • September (100)
  • August (50)
  • July (56)
  • June (46)
  • May (59)
  • April (50)
  • March (60)
  • February (42)
  • January (53)
  • December (58)
  • November (61)
  • October (39)
  • September (36)
  • August (36)
  • July (34)
  • June (34)
  • May (36)
  • April (29)
  • March (82)
  • February (1)
  • January (8)
  • December (14)
  • November (41)
  • October (13)
  • September (5)
  • August (48)
  • July (9)
  • June (6)
  • May (119)
  • April (259)
  • March (122)
  • February (368)
  • January (33)
  • October (2)
  • July (11)
  • June (29)
  • May (25)
  • April (168)
  • March (93)
  • February (60)
  • January (28)
  • December (195)
  • November (24)
  • October (40)
  • September (55)
  • August (6)
  • July (48)
  • May (2)
  • January (2)
  • July (6)
  • June (6)
  • February (17)
  • January (69)
  • December (122)
  • November (56)
  • October (92)
  • September (76)
  • August (6)

  • Sitaare Zameen Par Full Movie Review - 7/7/2025
  • Step-by-step Vue.js Tutorial Beginner to Master - 7/7/2025
  • Tailwindcss best practices for responsive design - 7/1/2025
  • Tailwind CSS Tutorial (Beginner to Master) - 7/1/2025
  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh - 9/21/2024

Laravel News

  • Updates to Inertia.js and the Laravel Adapter - 7/18/2025
  • Deploying Laravel Applications on Laravel Cloud With MongoDB Atlas - 7/17/2025
  • Conditional Collection Skipping with Laravel's skipWhile Method - 7/14/2025
  • Tinkerwell v5 is now released - 7/17/2025
  • Symfony AI Components - 7/17/2025

Copyright © 2025 CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda