परिचय: लारवेल में GraphQL क्यों लागू करें?
यदि आप REST API से परेशान हैं और अपने क्लाइंट को लचीला व सटीक डेटा देना चाहते हैं, तो GraphQL आपके लिए एक शानदार विकल्प है। लारवेल में Lighthouse जैसे टूल्स के साथ GraphQL API बनाना बहुत आसान है। इस लारवेल GraphQL ट्यूटोरियल हिंदी में में, हम आपको आसान चरणों में बताएंगे कि लारवेल में GraphQL API कैसे बनाते हैं, जिसमें क्वेरीज़, म्यूटेशन्स, और ऑथेंटिकेशन शामिल होंगे। यह ट्यूटोरियल नए डेवलपर्स के लिए बहुत अच्छा है। तैयार हैं? चलिए शुरू करते हैं! 🚀
लारवेल GraphQL के फायदे
GraphQL इतना लोकप्रिय क्यों है? आइए इसके कुछ मुख्य फायदों को समझें:
- लचीलापन: क्लाइंट को केवल वही डेटा मिलता है, जो उसे चाहिए।
- एकल एंडपॉइंट: REST जैसे कई एंडपॉइंट्स की जरूरत नहीं।
- आसान एकीकरण: Lighthouse के साथ लारवेल में आसानी से सेटअप हो जाता है।
- रियल-टाइम डेटा: सब्सक्रिप्शन्स के जरिए तुरंत अपडेट्स मिलते हैं।
- कम्युनिटी सहायता: GraphQL और लारवेल की वैश्विक कम्युनिटी से बहुत सारी गाइड्स उपलब्ध हैं।
जानकारी: 2025 में 30% डेवलपर्स मानते हैं कि GraphQL REST का भविष्य है!
GraphQL से क्या बना सकते हैं?
लारवेल और GraphQL के साथ आप कई तरह के प्रोजेक्ट्स बना सकते हैं, जैसे:
- मोबाइल ऐप बैकएंड: डायनामिक डेटा प्रदान करने के लिए।
- वेब ऐप्स: सिंगल पेज ऐप्स (SPA) के लिए API।
- डैशबोर्ड्स: रियल-टाइम डेटा दिखाने के लिए।
- थर्ड-पार्टी एकीकरण: लचीला डेटा शेयरिंग।
लारवेल में GraphQL लागू करने की आसान गाइड
चरण 1: लारवेल प्रोजेक्ट सेटअप करें
सबसे पहले, एक नया लारवेल प्रोजेक्ट बनाएं। इसके लिए आपको चाहिए:
- PHP: संस्करण 8.1 या उससे ऊपर।
- कंपोजर: PHP पैकेज मैनेजर।
- डेटाबेस: MySQL।
सेटअप कैसे करें?
- टर्मिनल में यह कमांड चलाएं:
composer create-project laravel/laravel graphql-app
इससे “graphql-app” नाम का फोल्डर बनेगा।
- फोल्डर में जाएं और सर्वर शुरू करें:
cd graphql-app
php artisan serve
ब्राउज़र में http://localhost:8000
खोलें, आपको लारवेल का स्वागत पेज दिखेगा।
चरण 2: डेटाबेस कॉन्फिगर करें
GraphQL API के लिए डेटा (जैसे पोस्ट्स) स्टोर करने के लिए डेटाबेस चाहिए।
.env
फाइल में डेटाबेस जानकारी डालें:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=graphql_db
DB_USERNAME=your_username
DB_PASSWORD=your_password
- MySQL में
graphql_db
नाम का डेटाबेस बनाएं। - पोस्ट्स के लिए मॉडल और माइग्रेशन बनाएं:
php artisan make:model Post -m
database/migrations/
में माइग्रेशन फाइल में निम्नलिखित कोड डालें:
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->unsignedBigInteger('user_id');
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
- माइग्रेशन चलाएं:
php artisan migrate
app/Models/Post.php
में मॉडल अपडेट करें:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = ['title', 'content', 'user_id'];
public function user()
{
return $this->belongsTo(User::class);
}
}
app/Models/User.php
में रिलेशन जोड़ें:
public function posts()
{
return $this->hasMany(Post::class);
}
चरण 3: Lighthouse इंस्टॉल करें
Lighthouse लारवेल में GraphQL लागू करने का सबसे अच्छा पैकेज है।
- टर्मिनल में यह कमांड चलाएं:
composer require nuwave/lighthouse
- Lighthouse कॉन्फिग पब्लिश करें:
php artisan vendor:publish --provider="Nuwave\Lighthouse\LighthouseServiceProvider" --tag=config
चरण 4: GraphQL स्कीमा डिफाइन करें
GraphQL स्कीमा में क्वेरीज़ और म्यूटेशन्स को परिभाषित करें।
graphql/schema.graphql
फाइल में निम्नलिखित कोड डालें:
type Query {
posts: [Post!]! @all
post(id: ID!): Post @find
}
type Mutation {
createPost(title: String!, content: String!, user_id: ID!): Post! @create
updatePost(id: ID!, title: String, content: String): Post! @update
deletePost(id: ID!): Post! @delete
}
type Post {
id: ID!
title: String!
content: String!
user: User! @belongsTo
created_at: DateTime!
updated_at: DateTime!
}
type User {
id: ID!
name: String!
email: String!
posts: [Post!]! @hasMany
}
यह स्कीमा पोस्ट्स को बनाने, प्राप्त करने, अपडेट करने, और हटाने की क्वेरीज़ और म्यूटेशन्स को परिभाषित करता है।
चरण 5: ऑथेंटिकेशन सेटअप करें
GraphQL API को सुरक्षित करने के लिए Laravel Sanctum का उपयोग करें।
- Sanctum इंस्टॉल करें:
composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
app/Models/User.php
में Sanctum ट्रेट जोड़ें:
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens;
protected $fillable = ['name', 'email', 'password'];
public function posts()
{
return $this->hasMany(Post::class);
}
}
config/lighthouse.php
में ऑथ गार्ड कॉन्फिगर करें:
'guard' => 'sanctum',
- ऑथ म्यूटेशन्स जोड़ें।
graphql/schema.graphql
में यह जोड़ें:
type Mutation {
login(email: String!, password: String!): AuthPayload! @field(resolver: "App\\GraphQL\\Mutations\\Login")
register(name: String!, email: String!, password: String!): AuthPayload! @field(resolver: "App\\GraphQL\\Mutations\\Register")
}
type AuthPayload {
token: String!
user: User!
}
चरण 6: ऑथ म्यूटेशन्स बनाएं
लॉगिन और रजिस्टर म्यूटेशन्स बनाएं।
app/GraphQL/Mutations/Login.php
बनाएं और निम्नलिखित कोड डालें:
namespace App\GraphQL\Mutations;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
class Login
{
public function __invoke($_, array $args)
{
$user = User::where('email', $args['email'])->first();
if (!$user || !Hash::check($args['password'], $user->password)) {
throw new \Exception('Invalid credentials');
}
$token = $user->createToken('graphql')->plainTextToken;
return ['token' => $token, 'user' => $user];
}
}
app/GraphQL/Mutations/Register.php
बनाएं और निम्नलिखित कोड डालें:
namespace App\GraphQL\Mutations;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
class Register
{
public function __invoke($_, array $args)
{
$user = User::create([
'name' => $args['name'],
'email' => $args['email'],
'password' => Hash::make($args['password']),
]);
$token = $user->createToken('graphql')->plainTextToken;
return ['token' => $token, 'user' => $user];
}
}
चरण 7: GraphQL API टेस्ट करें
GraphQL एंडपॉइंट्स को टेस्ट करने के लिए GraphiQL या Postman का उपयोग करें।
- GraphiQL इंस्टॉल करें:
php artisan vendor:publish --provider="Nuwave\Lighthouse\LighthouseServiceProvider" --tag=graphiql
- ब्राउज़र में
http://localhost:8000/graphiql
खोलें। - रजिस्टर म्यूटेशन टेस्ट करें:
mutation {
register(name: "Test User", email: "test@example.com", password: "password") {
token
user {
id
name
}
}
}
- लॉगिन म्यूटेशन टेस्ट करें:
mutation {
login(email: "test@example.com", password: "password") {
token
user {
id
name
}
}
}
- पोस्ट्स क्वेरी टेस्ट करें (टोकन के साथ):
query {
posts {
id
title
content
user {
name
}
}
}
हेडर्स में टोकन डालें: Authorization: Bearer your_token_here
- पोस्ट क्रिएट म्यूटेशन टेस्ट करें:
mutation {
createPost(title: "Test Post", content: "This is a test post", user_id: 1) {
id
title
content
}
}
चरण 8: ऑथेंटिकेशन मिडलवेयर जोड़ें
कुछ क्वेरीज़ को सुरक्षित करें।
graphql/schema.graphql
में ऑथ डायरेक्टिव जोड़ें:
type Query {
posts: [Post!]! @all @middleware(checks: ["auth:sanctum"])
post(id: ID!): Post @find @middleware(checks: ["auth:sanctum"])
}
चरण 9: होस्टिंग
GraphQL API को ऑनलाइन ले जाएं।
- होस्टिंग चुनें: Hostinger सस्ता और नए डेवलपर्स के लिए उपयुक्त है।
- प्रोजेक्ट फाइल्स और डेटाबेस को सर्वर पर अपलोड करें।
.env
फाइल कॉन्फिगर करें।
लारवेल GraphQL टिप्स
- स्कीमा डिज़ाइन: स्कीमा को साफ और मॉड्यूलर रखें।
- सुरक्षा: Sanctum या JWT से API को सुरक्षित करें।
- टेस्टिंग: GraphiQL या Postman से क्वेरीज़ टेस्ट करें।
- डॉक्यूमेंटेशन: Lighthouse Docs और GraphQL Docs पढ़ें।
अक्सर पूछे जाने वाले सवाल
1. लारवेल में GraphQL क्यों लागू करें?
GraphQL लचीला और एकल-एंडपॉइंट डेटा प्रदान करता है।
2. क्या GraphQL नए डेवलपर्स के लिए आसान है?
हां, इस लारवेल GraphQL ट्यूटोरियल हिंदी में गाइड के साथ नए डेवलपर्स आसानी से सीख सकते हैं।
3. GraphQL API बनाने में कितना समय लगता है?
इस गाइड के साथ 1-2 दिन। जटिल APIs के लिए 1 सप्ताह।
4. क्या मैं REST के साथ GraphQL यूज़ कर सकता हूँ?
हां, दोनों को एक साथ हाइब्रिड तरीके से यूज़ किया जा सकता है।
5. GraphQL API को ऑनलाइन कैसे लाएँ?
Hostinger पर अपने प्रोजेक्ट को अपलोड करें।
निष्कर्ष: आज ही GraphQL शुरू करें!
इस लारवेल GraphQL ट्यूटोरियल हिंदी में के माध्यम से आपने सीखा कि लारवेल में Lighthouse से GraphQL API कैसे बनाते हैं। इस गाइड को फॉलो करें और अपने प्रोजेक्ट्स में लचीली APIs जोड़ें। कोई सवाल हो? नीचे कमेंट करें। अपनी वेबसाइट को Hostinger पर होस्ट करें और इसे ऑनलाइन ले जाएं।
आगे क्या सीखें? Laravel Livewire, Multi-Tenancy, या Docker पर ट्यूटोरियल्स हिंदी में चाहिए? InHindi24.com पर और गाइड्स पढ़ें!