🚀 DevOps & SRE Certification Program 📅 Starting: 1st of Every Month 🤝 +91 8409492687 🔍 Contact@DevOpsSchool.com

Upgrade & Secure Your Future with DevOps, SRE, DevSecOps, MLOps!

We spend hours on Instagram and YouTube and waste money on coffee and fast food, but won’t spend 30 minutes a day learning skills to boost our careers.
Master in DevOps, SRE, DevSecOps & MLOps!

Learn from Guru Rajesh Kumar and double your salary in just one year.


Get Started Now!

How to Create Laravel Eloquent API Resources to convert model collections into JSON(Part 4).

Laravel Migration

Json resource without wrapping with data key

Introduction:

In the earliear examples i was genreting Json resource which is wrapped with "data:"{} Object like:

Let's generate json resource without data wrapping..

{
"data": {
"id": 3,
"name": "Deepak",
"email": "deepakkumar.ac.in@gmail.com",
"profile": "http://demo-app/user/3"
},
"version": "2.0.0",
"attribution": "http://demo-app/terms-of-service",
"valid_as_of": "Sat, 22 Aug 2020 08:25:40"
}

Now, Here we will see how to generate Json resource without any wrapping.

  • Lets see where i will make Changes in code. NOte: Make sure you have Resourec folder with User class under <Your-app>\app\http\Resources

STEP 1: Adding with(){} with additional information.

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\Resource;
use Illuminate\Support\Facades\Log;

class User extends Resource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'email' => $this->email,
            'profile' => url('/user/'. $this->id . '/'),
     
        ];
    }
}
 

STEP 2: Go to Providers and open <your-app>/app/Providers/AppServiceProviders and add below code:

We will tell laravel to not to render Json resource with Wrapping

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Http\Resources\Json\Resource;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Resource::withoutWrapping();   
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

STEP 2: keep below below Changes in web.php file as it was before

<?php

use App\User;
use App\Http\Resources\User as UserResource;


Route::get('/', function () {
    return view('welcome');
});

Route::get('/json', function () {

	$users = User::first();
    return new UserResource($users);
});

STEP 3: All set to go

  • Here my Application is 'demo-app' and its virtual host url is http://demo-app/. So i will open browser and hit: http://demo-app/json and see tha magic of LARAVEL RESOURCES

json-without-wrapping-with-data-key

My basic recommendation for learning : Eloquent: API Resources

Thanks

Certification Courses

DevOpsSchool has introduced a series of professional certification courses designed to enhance your skills and expertise in cutting-edge technologies and methodologies. Whether you are aiming to excel in development, security, or operations, these certifications provide a comprehensive learning experience. Explore the following programs:

DevOps Certification, SRE Certification, and DevSecOps Certification by DevOpsSchool

Explore our DevOps Certification, SRE Certification, and DevSecOps Certification programs at DevOpsSchool. Gain the expertise needed to excel in your career with hands-on training and globally recognized certifications.