इस साइटपॉइंट श्रृंखला ने बाकी सिद्धांतों का पता लगाया है। यह लेख सिनात्रा (रूबी) से प्रेरित एक PHP माइक्रो-फ्रेमवर्क स्लिम का उपयोग करके एक आरामदायक वेब सेवा का निर्माण करता है। स्लिम की हल्की प्रकृति, रूटिंग, अनुरोध/प्रतिक्रिया हैंडलिंग और न्यूनतम दृश्य समर्थन जैसे कोर घटकों के साथ, यह सरल आराम एपीआई के लिए आदर्श बनाता है।
महत्वपूर्ण अवधारणाएं:
php
"slim/slim.php" की आवश्यकता है;
$ ऐप = नया स्लिम ();
$ app-> get ("/", फ़ंक्शन () {
इको " हैलो स्लिम वर्ल्ड
";
});
$ ऐप-> रन ();
?>
] स्लिम ऑटोलोड्स आवश्यक फाइलें। स्लिम कंस्ट्रक्टर कॉन्फ़िगरेशन (जैसे, , templates.path ,
दृश्य) स्वीकार करता है। ] कस्टम दृश्य हैंडलर डिफ़ॉल्ट slim_view
को बदल सकते हैं। उदाहरण:
get("/", function () {
echo "Hello Slim World
";
});
$app->run();
?>
रन () पर कॉल करें।
एक पुस्तकालय सेवा का निर्माण:
आइए एक पुस्तकालय प्रबंधन सेवा बनाएं। NOTORM डेटाबेस इंटरैक्शन को सरल करता है (एक PDO उदाहरण की आवश्यकता है)।
php
"notorm.php" की आवश्यकता है;
$ PDO = नया PDO ($ DSN, $ उपयोगकर्ता नाम, $ पासवर्ड); // अपने डेटाबेस क्रेडेंशियल के साथ बदलें
$ db = नया notorm ($ pdo);
?>
]
यह समापन बिंदु JSON प्रारूप में सभी पुस्तकों को सूचीबद्ध करता है:
php
// ... (पिछला कोड) ...
$ ऐप-> प्राप्त करें ("/पुस्तकें", फ़ंक्शन () उपयोग ($ ऐप, $ DB) {
$ पुस्तकें = सरणी ();
foreach ($ db-> पुस्तकें () $ पुस्तक के रूप में) {
$ पुस्तकें [] = सरणी (
"आईडी" => $ पुस्तक ["आईडी"],
"शीर्षक" => $ पुस्तक ["शीर्षक"],
"लेखक" => $ पुस्तक ["लेखक"],
"सारांश" => $ पुस्तक ["सारांश"]
);
}
$ app-> प्रतिक्रिया ()-> हेडर ("सामग्री-प्रकार", "एप्लिकेशन/json");
इको JSON_ENCODE ($ पुस्तकें);
});
// ... (बाकी कोड) ...
"development",
"TEMPLATES.PATH" => "./templates"
));
?>
पुस्तक विवरण प्राप्त करना:
आईडी द्वारा एक पुस्तक पुनः प्राप्त करें:
php // ... (पिछला कोड) ... $ app-> get ("/book/: id", फ़ंक्शन ($ id) उपयोग ($ app, $ db) { $ app-> प्रतिक्रिया ()-> हेडर ("सामग्री-प्रकार", "एप्लिकेशन/json"); $ पुस्तक = $ db-> पुस्तकें ()-> जहां ("आईडी", $ आईडी); if ($ data = $ book-> fetch ()) { echo json_encode (सरणी () "आईडी" => $ डेटा ["आईडी"], "शीर्षक" => $ डेटा ["शीर्षक"], "लेखक" => $ डेटा ["लेखक"], "सारांश" => $ डेटा ["सारांश"] )); } अन्य { echo json_encode (सरणी () "स्थिति" => गलत, "संदेश" => "बुक आईडी $ आईडी मौजूद नहीं है" )); } }); // ... (बाकी कोड) ...] वैकल्पिक पैरामीटर
का उपयोग करें। ] ] php // ... (पिछला कोड) ... $ ऐप-> पोस्ट ("/बुक", फ़ंक्शन () उपयोग ($ ऐप, $ db) { $ app-> प्रतिक्रिया ()-> हेडर ("सामग्री-प्रकार", "एप्लिकेशन/json"); $ पुस्तक = $ ऐप-> अनुरोध ()-> पोस्ट (); $ परिणाम = $ db-> पुस्तकें-> डालें ($ पुस्तक); echo json_encode (सरणी ("id" => $ परिणाम ["id"])); }); $ ऐप-> पुट ("/बुक/: आईडी", फ़ंक्शन ($ आईडी) उपयोग ($ ऐप, $ DB) { $ app-> प्रतिक्रिया ()-> हेडर ("सामग्री-प्रकार", "एप्लिकेशन/json"); $ पुस्तक = $ db-> पुस्तकें ()-> जहां ("आईडी", $ आईडी); if ($ पुस्तक-> fetch ()) { $ पोस्ट = $ ऐप-> अनुरोध ()-> पुट (); $ परिणाम = $ बुक-> अपडेट ($ पोस्ट); echo json_encode (सरणी () "स्थिति" => (बूल) $ परिणाम, "संदेश" => "पुस्तक को सफलतापूर्वक अपडेट किया गया" )); } अन्य { echo json_encode (सरणी () "स्थिति" => गलत, "संदेश" => "बुक आईडी $ आईडी मौजूद नहीं है" )); } }); // ... (बाकी कोड) ...
] ब्राउज़र-आधारित पुट अनुरोधों के लिए, एक छिपे हुए क्षेत्र का उपयोग करें
_ विधिget("/books", function () use ($app, $db) {
$books = array();
foreach ($db->books() as $book) {
$books[] = array(
"id" => $book["id"],
"title" => $book["title"],
"author" => $book["author"],
"summary" => $book["summary"]
);
}
$app->response()->header("Content-Type", "application/json");
echo json_encode($books);
});
// ... (rest of the code) ...
php
// ... (पिछला कोड) ...
$ ऐप-> डिलीट ("/बुक/: आईडी", फ़ंक्शन ($ आईडी) उपयोग ($ ऐप, $ db) {
$ app-> प्रतिक्रिया ()-> हेडर ("सामग्री-प्रकार", "एप्लिकेशन/json");
$ पुस्तक = $ db-> पुस्तकें ()-> जहां ("आईडी", $ आईडी);
if ($ पुस्तक-> fetch ()) {
$ परिणाम = $ पुस्तक-> हटाएं ();
echo json_encode (सरणी ()
"स्थिति" => सच,
"संदेश" => "पुस्तक सफलतापूर्वक हटा दी गई"
));
} अन्य {
echo json_encode (सरणी ()
"स्थिति" => गलत,
"संदेश" => "बुक आईडी $ आईडी मौजूद नहीं है"
));
}
});
// ... (बाकी कोड) ...
]
मानचित्र () विधि एक ही मार्ग पर कई HTTP विधियों को संभालती है (यहाँ नहीं दिखाया गया है)।
निष्कर्ष: ] आगे के विकास में मजबूत त्रुटि हैंडलिंग और इनपुट सत्यापन शामिल होना चाहिए। स्रोत कोड (यहां शामिल नहीं है) GitHub पर पाया जा सकता है (मूल पाठ में प्रदान नहीं किया गया लिंक)। मूल पाठ के एफएक्यूएस अनुभाग को छोड़ दिया गया है क्योंकि यह स्लिम के प्रलेखन के माध्यम से आसानी से उपलब्ध बुनियादी जानकारी प्रदान करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3