If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
GraphQL एक powerful query language है जो API requests को handle करने का एक नया तरीका देता है , यह RESTful APIs
का एक alternative है, जिसमे आपको सिर्फ वही data मिलता है जो आपको चाहिए, बिना extra overhead
के।
इस blog में हम Laravel में GraphQL integrate करने का process देखेंगे , हम step-by-step समझेंगे कि कैसे आप Laravel application में GraphQL setup कर सकते हैं, और उसके benefits क्या हैं।
●●●
GraphQL एक query language
है जो APIs के लिए use होती है, और इससे Facebook
ने develop किया था। इसका main purpose यह है कि आप अपने client applications को जो data चाहिए, सिर्फ वही data retrieve कर सकें, बिना किसी extra information के।
इसमें एक ही request में multiple resources को query करने कि सुविधा मिलती है, जो REST APIs
में मुश्किल होता है।
Client-Driven Queries : GraphQL में client specify करता है कि उससे exactly कौन सा data चाहिए , इसका मतलब यह है कि आप over-fetching (ज्यादा data fetch करना) और under-fetching (कम data fetch करना) से बच सकते हैं।
Single Endpoint : GraphQL APIs में सिर्फ single endpoint
होता है , आपको हर resource के लिए अलग-अलग endpoints create करने कि need नहीं होती, जैसे कि REST APIs
में होता है।
Strongly Typed Schema : GraphQL एक strongly typed system use करता है, जिसमे हर field और query का type pre-defined होता है। यह schema के through ensure करता है कि जो data fetch हो रहा है, वो accurate हो।
Real-Time Data with Subscriptions : GraphQL subscriptions का support भी देता है, जिससे आप real-time data changes को subscribe कर सकते हैं , मतलब, जैसे ही data change होगा, आपको real-time update मिल जायेगा।
Hierarchical Structure : GraphQL queries hierarchical होती हैं, मतलब आप nested data को easily retrieve कर सकते हैं। यह feature REST APIs में थोड़ा मुश्किल होता है।
●●●
Laravel में GraphQL integrate करने के लिए, हम "lighthouse
" package का use करेंगे , यह package Laravel के साथ GraphQL को seamlessly integrate करता है।
composer create-project --prefer-dist laravel/laravel laravel-graphql cd laravel-graphql
अब, आपको अपने Laravel project में lighthouse
package install करना पड़ेगा , इसके लिए, आप नीचे दी गयी command का use कर सकते हैं -
composer require nuwave/lighthouse
इसके बाद, आपको lighthouse service provider को register करना होगा , यह Laravel के config/app.php
file में होता है।
'providers' => [ // Other Service Providers Nuwave\Lighthouse\LighthouseServiceProvider::class, ],
Lighthouse कि configuration files को publish
करने के लिए, यह command run करें।
php artisan vendor:publish --tag=lighthouse-schema php artisan vendor:publish --tag=lighthouse-config
यह command config directory में lighthouse.php
config file और graphql/schema.graphql
schema file generate करेगी।
GraphQL schema define करने के लिए, आप graphql/schema.graphql
file में अपनी types और queries define कर सकते हैं।
Example के लिए, हम एक simple User
type और users query define करेंगे।
type Query {
users: [User!]!
user(id: ID!): User
}
type Mutation {
createUser(name: String!, email: String!): User!
}
type User {
id: ID!
name: String!
email: String!
}
यहाँ @all
directive का use करके हमने Laravel model का complete data fetch करने के लिए query create की है।
Resolvers का काम होता है GraphQL queries और mutations को process करना। Laravel में, lighthouse package कि help से, आपको हर query के लिए resolver manually लिखने कि need नहीं पड़ती , लेकिन अगर आप custom logic implement करना चाहते हैं, तो आप custom resolver
भी create कर सकते हैं।
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function resolveUsers()
{
return User::all();
}
public function resolveUser($root, array $args)
{
return User::find($args['id']);
}
public function resolveCreateUser($root, array $args)
{
return User::create([
'name' => $args['name'],
'email' => $args['email'],
]);
}
}
इस custom resolver को schema में कुछ इस तरह link कर सकते हैं।
type Query { users: [User!]! @field(resolver: "App\\Http\\Controllers\\UserController@resolveUsers") user(id: ID!): User @field(resolver: "App\\Http\\Controllers\\UserController@resolveUser") } type Mutation { createUser(name: String!, email: String!): User! @field(resolver: "App\\Http\\Controllers\\UserController@resolveCreateUser") }
ensure the User model file is configured correctly -
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
use HasFactory;
protected $fillable = ['name', 'email'];
}
Laravel में GraphQL API को test करने के लिए, आप GraphQL Playground का use कर सकते हैं, जो कि lighthouse के साथ by default आता है।
आप अपने browser में http://your-app-url/graphql-playground
URL पे जाकर queries run कर सकते हैं।
{
users {
id
name
email
}
}
यह query सारे users के नाम, email और id को return करेगी।
●●●
Laravel में GraphQL integration आपके application को flexible और efficient बनाता है। इस blog में हमने Lighthouse package का use करके Laravel में GraphQL setup करने का process देखा।
GraphQL का use करके आप अपने API requests को optimize
कर सकते हैं और exact data retrieve कर सकते हैं जो आपको चाहिए।
Loading ...