Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Restful Laravel Package

manhattan/restful

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation:

    composer require frodosghost/restful
    

    Add the service provider to config/app.php:

    'providers' => [
        // ...
        FrodosGhost\Restful\RestfulServiceProvider::class,
    ],
    
  2. Basic Route Definition: Define RESTful routes in routes/api.php:

    $restful = new \FrodosGhost\Restful\Restful('users');
    $restful->get('index', 'UserController@index');
    $restful->post('store', 'UserController@store');
    $restful->get('show', 'UserController@show');
    $restful->put('update', 'UserController@update');
    $restful->delete('destroy', 'UserController@destroy');
    
  3. First Use Case:

    • Create a controller (e.g., UserController) with standard CRUD methods.
    • Test endpoints like /api/users (GET), /api/users (POST), etc.

Implementation Patterns

Workflows

  1. Resource-Based Routing: Group routes by resource (e.g., users, posts) for logical separation.

    $restful = new \FrodosGhost\Restful\Restful('posts');
    $restful->get('index', 'PostController@index');
    
  2. Custom Actions: Add non-standard HTTP methods or custom endpoints:

    $restful->get('custom', 'UserController@customAction');
    $restful->patch('partial-update', 'UserController@partialUpdate');
    
  3. Middleware Integration: Attach middleware to all routes of a resource:

    $restful = new \FrodosGhost\Restful\Restful('admin/users');
    $restful->middleware('auth:admin');
    
  4. Dependency Injection: Pass dependencies (e.g., repositories) to controllers via constructor binding in Laravel’s IoC container.

Integration Tips

  • Laravel Compatibility: Works seamlessly with Laravel’s routing, middleware, and service container. Use Laravel’s Route::prefix() or Route::namespace() alongside Restful for deeper integration.

    Route::prefix('api/v1')->group(function () {
        $restful = new \FrodosGhost\Restful\Restful('v1/users');
        // ...
    });
    
  • API Versioning: Combine with Laravel’s route model binding or versioning strategies (e.g., /v1/users).

  • Validation: Use Laravel’s Form Request validation in controllers (e.g., StoreUserRequest) for consistent validation logic.


Gotchas and Tips

Pitfalls

  1. Namespace Collisions: Avoid naming conflicts with Laravel’s built-in routes. Prefix custom routes or resources (e.g., api/v1/custom-resource).

  2. Method Overrides: Ensure controller methods match the HTTP verbs (e.g., update for PUT/PATCH). Misalignment can cause 404 errors.

  3. Resource Naming: Hyphens (-) in resource names (e.g., user-profiles) may cause issues. Use underscores (user_profiles) or camelCase (userProfiles) instead.

  4. Middleware Order: Middleware attached to Restful routes runs after Laravel’s global middleware. Use Route::middleware() for priority adjustments.

Debugging

  • Route Debugging: Dump registered routes to verify setup:

    php artisan route:list
    

    Look for GET|POST|PUT|DELETE /api/{resource} patterns.

  • Controller Debugging: Add dd($request->all()) in controller methods to inspect incoming data.

Extension Points

  1. Custom Response Formatting: Override the default JSON response in controllers or create a base controller:

    class BaseApiController extends Controller {
        protected function respond($data, $status = 200) {
            return response()->json($data, $status);
        }
    }
    
  2. Dynamic Resource Binding: Extend the Restful class to support dynamic resource names or query parameters:

    $restful = new \FrodosGhost\Restful\Restful(request('resource'));
    
  3. Authentication: Integrate with Laravel’s auth (e.g., Sanctum, Passport) by attaching middleware:

    $restful->middleware('auth:sanctum');
    
  4. Rate Limiting: Apply Laravel’s throttling middleware to Restful routes:

    $restful->middleware('throttle:60,1');
    

Config Quirks

  • No Built-in Config: The package lacks a config file. Default behavior is minimal; customize via route definitions or middleware.
  • PHP 5.3 Constraint: Avoid modern PHP features (e.g., arrow functions, type hints) if using older PHP versions.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor