Rumah >pembangunan bahagian belakang >tutorial php >PHP Master | Menulis Perkhidmatan Web RESTful dengan Slim

PHP Master | Menulis Perkhidmatan Web RESTful dengan Slim

Lisa Kudrow
Lisa Kudrowasal
2025-02-26 09:13:10644semak imbas

PHP Master | Writing a RESTful Web Service with Slim

Siri SitePoint ini telah meneroka prinsip REST. Artikel ini menunjukkan membina perkhidmatan web yang tenang menggunakan Slim, rangka kerja mikro PHP yang diilhamkan oleh Sinatra (Ruby). Sifat ringan Slim, dengan komponen teras seperti penghalaan, permintaan/pengendalian tindak balas, dan sokongan pandangan yang minimum, menjadikannya sesuai untuk API rehat yang mudah. ​​

Konsep Utama:

    Slim adalah kerangka mikro PHP yang sempurna untuk perkhidmatan RESTFul yang mudah, menyokong PHP 5.2 dan kedua-dua gaya pengaturcaraan berfungsi dan (5.3).
  • Laluan peta uris ke fungsi panggil balik untuk kaedah HTTP tertentu. Slim cekap mengendalikan pelbagai kaedah untuk URI yang sama.
  • Contoh aplikasi pengurusan perpustakaan mempamerkan penyenaraian, menambah, memadam, dan mengemas kini butiran buku melalui panggilan perkhidmatan web. Notorm, perpustakaan pangkalan data PHP yang ringan, mengendalikan interaksi pangkalan data.
  • endpoints menggunakan
  • , post(), dan put() kaedah untuk membuat, mengemas kini, dan memadam rekod buku masing -masing. delete()

Memperkenalkan Slim:

Mulailah dengan memuat turun Slim. Contoh ini menggunakan gaya 5.3. Buat

: index.php

<code class="language-php"><?php
require "Slim/Slim.php";

$app = new Slim();

$app->get("/", function () {
    echo "<h1>Hello Slim World</h1>";
});

$app->run();
?></code>
mengakses

dalam penyemak imbas anda memaparkan "Hello Slim World". Slim Autoloads Fail yang diperlukan. Pembina tipis menerima konfigurasi (mis., index.php, MODE, TEMPLATES.PATH). VIEW Menetapkan persekitaran (pembangunan/pengeluaran), dan MODE menentukan direktori templat. Pengendali paparan tersuai boleh menggantikan lalai TEMPLATES.PATH. Contoh: Slim_View

<code class="language-php"><?php
$app = new Slim(array(
    "MODE" => "development",
    "TEMPLATES.PATH" => "./templates"
));
?></code>
Penciptaan laluan adalah penting. Laluan peta URI ke fungsi panggil balik berdasarkan kaedah HTTP. Slim mengutamakan laluan sepadan pertama; Permintaan yang tidak dapat ditandingi mengakibatkan ralat 404. Selepas menentukan laluan, hubungi

untuk memulakan permohonan. run()

Membina Perkhidmatan Perpustakaan:

Mari buat perkhidmatan pengurusan perpustakaan. Notorm memudahkan interaksi pangkalan data (memerlukan contoh PDO).

<code class="language-php"><?php
require "NotORM.php";

$pdo = new PDO($dsn, $username, $password); // Replace with your database credentials
$db = new NotORM($pdo);
?></code>

Buku Penyenaraian:

endpoint ini menyenaraikan semua buku dalam format json:

<code class="language-php"><?php
// ... (previous code) ...

$app->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) ...</code>
mengendalikan mendapatkan permintaan.

membolehkan mengakses pembolehubah luaran dalam fungsi tanpa nama. Header Response ditetapkan kepada get(), dan data buku dikodkan sebagai JSON. use application/json

Mendapatkan butiran buku:

Dapatkan buku dengan id:

Parameter laluan
<code class="language-php"><?php
// ... (previous code) ...

$app->get("/book/:id", function ($id) use ($app, $db) {
    $app->response()->header("Content-Type", "application/json");
    $book = $db->books()->where("id", $id);
    if ($data = $book->fetch()) {
        echo json_encode(array(
            "id" => $data["id"],
            "title" => $data["title"],
            "author" => $data["author"],
            "summary" => $data["summary"]
        ));
    } else {
        echo json_encode(array(
            "status" => false,
            "message" => "Book ID $id does not exist"
        ));
    }
});
// ... (rest of the code) ...</code>
dihantar ke fungsi panggil balik. Parameter pilihan menggunakan

. Untuk parameter pilihan tanpa hujah panggil balik yang jelas, gunakan :id. /book(/:id) func_get_args()

Menambah dan menyunting Buku:

post() menambah, dan put() mengemas kini buku:

<code class="language-php"><?php
require "Slim/Slim.php";

$app = new Slim();

$app->get("/", function () {
    echo "<h1>Hello Slim World</h1>";
});

$app->run();
?></code>

$app->request()->post() dan $app->request()->put() mengambil pos dan meletakkan data masing -masing. Untuk permintaan yang berasaskan pelayar, gunakan medan tersembunyi _METHOD dengan nilai "letakkan" dalam bentuk anda.

Memadam buku:

Padam buku dengan id:

<code class="language-php"><?php
$app = new Slim(array(
    "MODE" => "development",
    "TEMPLATES.PATH" => "./templates"
));
?></code>

Kaedah delete() membuang rekod pangkalan data. Kaedah map() mengendalikan pelbagai kaedah HTTP pada satu laluan (tidak ditunjukkan di sini).

Kesimpulan:

Artikel ini menunjukkan membina perkhidmatan web yang tenang dengan Slim. Pembangunan selanjutnya harus termasuk pengendalian ralat yang mantap dan pengesahan input. Kod sumber (tidak termasuk di sini) boleh didapati di GitHub (pautan tidak disediakan dalam teks asal). Bahagian Soalan Lazim dari teks asal ditinggalkan kerana ia memberikan maklumat asas yang tersedia melalui dokumentasi Slim.

Atas ialah kandungan terperinci PHP Master | Menulis Perkhidmatan Web RESTful dengan Slim. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn