Laravel GraphQL Integration Guide : GraphQL with Laravel

Other Blogs

Blogs ❯❯ Linux

Image could not load

Laravel GraphQL Integration

GraphQL Server with Laravel

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 क्या हैं।

What is GraphQL ?

GraphQL एक query language है जो APIs के लिए use होती है, और इससे Facebook ने develop किया था। इसका main purpose यह है कि आप अपने client applications को जो data चाहिए, सिर्फ वही data retrieve कर सकें, बिना किसी extra information के।

इसमें एक ही request में multiple resources को query करने कि सुविधा मिलती है, जो REST APIs में मुश्किल होता है।

Key features of GraphQL

  • 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 में थोड़ा मुश्किल होता है।

GraphQL Integration In Laravel

Laravel में GraphQL integrate करने के लिए, हम "lighthouse" package का use करेंगे , यह package Laravel के साथ GraphQL को seamlessly integrate करता है।

Step 1 : Install Laravel

composer create-project --prefer-dist laravel/laravel laravel-graphql
cd laravel-graphql

Step 2 : Install Lighthouse

अब, आपको अपने 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,
],

Step 3 : Publish Configuration Files

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 करेगी।

Step 4 : Define GraphQL Schema

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 की है।

Step 5 : Create Resolver

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")
}

Step 6 : Set Model

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']; }

Step 7 : Test Your GraphQL API

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 करेगी।

Conclusion

Laravel में GraphQL integration आपके application को flexible और efficient बनाता है। इस blog में हमने Lighthouse package का use करके Laravel में GraphQL setup करने का process देखा।

GraphQL का use करके आप अपने API requests को optimize कर सकते हैं और exact data retrieve कर सकते हैं जो आपको चाहिए।

Must read articles :

Recent Blogs

Loading ...

Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 4.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook

Your Thought ?

Please wait . . .

    2 Comment(s) found !