Laravel : Different between response()->json() and Resource
September 12, 2025
Both of them are responded with JSON with
response()->json()
A helper function to quickly return a JSON response.
return response()->json([
'success' => true,
'data' => $user,
], 200);
- When to use:
- For simple JSON responses.
- When you don’t need to transform or standardize the output.
- Useful in small apps, quick prototypes, or non-API projects.
- Pros:
- Fast, explicit, and flexible.
- You control the full JSON structure.
- Cons:
- Can become repetitive if you return the same structure in multiple places.
- Harder to maintain consistency across endpoints.
- Doesn’t support advanced transformation logic.
Laravel Resource (JsonResource / Resource Collection)
An abstraction for transforming Eloquent models (or collections) into JSON responses in a structured and reusable way.
use App\Http\Resources\UserResource;
return new UserResource($user);
// or for collections
return UserResource::collection(User::all());
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
];
}
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
];
}
- When to use:
- For API development.
- When you need consistent, reusable, and standardized JSON structures.
- When you want to hide or transform fields (e.g., masking sensitive data).
- When different clients (web, mobile) require consistent formats.
- Pros:
- Centralized transformation logic (easy maintenance).
- Automatically wraps collections and paginated data.
- Can add with() meta information (like status, links, etc.).
- Supports conditional attributes, relationships, and nesting.
- Cons:
- Slightly more boilerplate than response()->json().
- Overkill for small, one-off responses.
| Feature | response()->json() | Resource |
|---|---|---|
| Simplicity | ✅ Very simple | ❌ More setup |
| Consistency | ❌ Manual | ✅ Enforced |
| Reusability | ❌ No | ✅ Yes |
| Large APIs | ❌ Hard to maintain | ✅ Scales well |
| Quick Prototyping | ✅ Best choice | ❌ Slower |
