परिचय: आपको PHP पर REST API की आवश्यकता क्यों है?
REST API (Representational State Transfer) एक आर्किटेक्चरल शैली है जो विभिन्न अनुप्रयोगों को HTTP के माध्यम से एक दूसरे के साथ संवाद करने की अनुमति देती है। आज, कोई भी आधुनिक वेब सेवा API के बिना नहीं चल सकती: मोबाइल ऐप, SPA फ्रंटएंड, भुगतान प्रणालियों के साथ एकीकरण - इन सभी को डेटा विनिमय के लिए एक तेज़ और स्पष्ट इंटरफ़ेस की आवश्यकता होती है।
PHP बैकएंड के लिए सबसे लोकप्रिय भाषाओं में से एक बना हुआ है। आप बिना किसी भारी फ्रेमवर्क के शुद्ध PHP पर एक पूर्ण REST API लिख सकते हैं - इसमें आपको 30 मिनट से अधिक नहीं लगेंगे। इस लेख में, हम कार्यों (To-Do) की सूची के प्रबंधन के लिए CRUD संचालन (बनाना, पढ़ना, अपडेट करना, हटाना) के साथ एक व्यावहारिक उदाहरण देखेंगे।
1. वातावरण तैयार करना और प्रोजेक्ट संरचना
काम करने के लिए आपको आवश्यकता होगी:
- लोकल सर्वर (Open Server, XAMPP, MAMP या बिल्ट-इन PHP सर्वर)
- PHP संस्करण 7.4 या उच्चतर
- कोड एडिटर (VS Code, PhpStorm)
एक रूट फ़ोल्डर rest-api-php बनाएं और उसके अंदर फ़ाइलें बनाएं:
rest-api-php/├── index.php (प्रवेश बिंदु, राउटर)├── config.php (डेटाबेस सेटिंग्स)├── api/│ ├── tasks.php (कार्यों के लिए CRUD)│ └── helpers.php (सहायक फ़ंक्शन)└── .htaccess (अनुरोधों को index.php पर रीडायरेक्ट करना)1.1. सुंदर URL के लिए .htaccess सेट करना
सभी अनुरोधों को एक एकल प्रवेश बिंदु पर निर्देशित करने के लिए, रूट में एक .htaccess फ़ाइल बनाएं:
RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php [QSA,L]यदि आप बिल्ट-इन PHP सर्वर का उपयोग कर रहे हैं, तो बस इसे प्रोजेक्ट फ़ोल्डर से चलाएं: php -S localhost:8000।
2. राउटर और बेसिक API बनाना
index.php खोलें - यह हमारा मुख्य हैंडलर है। यह HTTP विधि और URI का विश्लेषण करेगा और आवश्यक फ़ंक्शन को कॉल करेगा।
2.1. index.php - प्रवेश बिंदु
<?phpheader("Content-Type: application/json; charset=UTF-8");header("Access-Control-Allow-Origin: *");header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");header("Access-Control-Allow-Headers: Content-Type, Authorization");
require_once 'config.php';require_once 'api/helpers.php';
$method = $_SERVER['REQUEST_METHOD'];$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);$uri = rtrim($uri, '/');
// सरल रूटिंगif ($uri === '/api/tasks') { require_once 'api/tasks.php'; handleTasks($method);} elseif (preg_match('/^\\/api\\/tasks\\/(\\d+)$/', $uri, $matches)) { require_once 'api/tasks.php'; handleTask($method, (int)$matches[1]);} else { sendResponse(['error' => 'Endpoint not found'], 404);}?>हम दो रूट संभालते हैं: /api/tasks (सूची/बनाना) और /api/tasks/{id} (विशिष्ट कार्य)।
2.2. helpers.php - सहायक फ़ंक्शन
<?phpfunction sendResponse($data, $status = 200) { http_response_code($status); echo json_encode($data, JSON_UNESCAPED_UNICODE); exit;}
function getJsonInput() { $input = file_get_contents('php://input'); return json_decode($input, true) ?? [];}?>3. डेटाबेस और CRUD संचालन के साथ काम करना
MySQL में एक सरल tasks तालिका बनाएं:
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, status ENUM('pending', 'completed') DEFAULT 'pending', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);फ़ाइल config.php:
<?php$host = 'localhost';$dbname = 'rest_api_db';$username = 'root';$password = '';
try { $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO: