Rumah > pembangunan bahagian belakang > tutorial php > Bangunkan perkhidmatan API RESTful yang cekap menggunakan rangka kerja PHP Bebas Lemak

Bangunkan perkhidmatan API RESTful yang cekap menggunakan rangka kerja PHP Bebas Lemak

王林
Lepaskan: 2023-06-27 09:38:01
asal
977 orang telah melayarinya

RESTful API ialah seni bina perkhidmatan web standard berdasarkan protokol HTTP Ia adalah teknologi paling popular dalam pembangunan pelbagai aplikasi web di Internet hari ini. API RESTful boleh digunakan untuk menyediakan banyak data dan fungsi yang berbeza dengan cepat kepada aplikasi luaran atau perkhidmatan lain. Dalam artikel ini, kami akan memperkenalkan Tanpa Lemak, rangka kerja PHP yang cekap, dan cara menggunakannya untuk membangunkan perkhidmatan API RESTful.

1. Apakah rangka kerja Bebas Lemak? Rangka kerja ini menyediakan banyak modul fungsi asas terbina dalam, seperti penghalaan, enjin templat, pangkalan data, dll., menjadikannya sangat cekap, mudah dan fleksibel semasa membuat aplikasi web. .

Sistem penghalaan yang berkuasa: Sistem penghalaan rangka kerja Tanpa Lemak dengan jelas merangkumi idea rangka kerja tersebut – menyediakan pembangun dengan pemetaan laluan URL yang pantas dan tepat, serta menyediakan banyak fungsi yang membantu pembangun berfungsi, seperti: Perlindungan penghalaan, kekangan penghalaan, alias penghalaan, dsb.

ORM Fleksibel: Rangka kerja Bebas Lemak menyediakan model ORM yang sangat fleksibel, menyokong berbilang pangkalan data, pelbagai perhubungan dan kaedah pertanyaan, dan merupakan rangka kerja operasi pangkalan data yang lengkap.

    Mekanisme pemalam yang berkuasa: Rangka kerja Bebas Lemak menyediakan banyak pemalam yang berkuasa untuk menyokong pelbagai fungsi, termasuk e-mel, pemprosesan imej, keselamatan, penyahpepijatan pencetakan, dsb.
  1. 3. Bagaimana cara menggunakan rangka kerja Bebas Lemak untuk membangunkan perkhidmatan API RESTful?
  2. Pasang rangka kerja Bebas Lemak
Anda boleh memuat turun pakej pemasangan dari laman web rasmi Bebas Lemak, atau anda boleh menggunakan komposer untuk memasangnya.

    Buat folder API RESTful
Buat folder API baharu dalam direktori Web anda dan alihkan rangka kerja Bebas Lemak ke folder API, seperti yang ditunjukkan dalam rajah:

├─API/
│  ├─f3/
│  │  ├─lib/
│  │  ├─...
│  ├─index.php
Salin selepas log masuk

    Buat indeks fail kemasukan API .php
Buat fail index.php, iaitu fail kemasukan untuk perkhidmatan API kami. Kita perlu memasukkan rangka kerja Bebas Lemak.

<?php
$f3 = require('f3/lib/base.php');
// RESTful API 路由
$f3->route('GET /api/@apiname','api@get');
$f3->route('POST /api/@apiname','api@post');
$f3->route('PUT /api/@apiname','api@put');
$f3->route('DELETE /api/@apiname','api@delete');
// 连接数据库
$f3->set('DB', new DBSQL('mysql:host=localhost;port=3306;dbname=test', 'root', 'root'));
// 执行
$f3->run();
Salin selepas log masuk

Dalam fail ini, kami mentakrifkan empat laluan, sepadan dengan empat kaedah permintaan protokol HTTP, iaitu GET, POST, PUT, dan DELETE. Rangka kerja Bebas Lemak menyokong permintaan pemprosesan melalui penghalaan, yang mentakrifkan hubungan pemetaan antara laluan URL dan fungsi. Oleh itu, kami mentakrifkan pengawal yang dipanggil api dan memetakan empat kaedah permintaan yang berbeza kepadanya.
  1. Buat pengawal API

Kami memerlukan pengawal API untuk mengendalikan permintaan yang dimulakan oleh pelanggan dan mengembalikan data tindak balas yang sepadan.

<?php
class api {
    protected $APIVer = 'v1';
    private function respond($response) {
        header('Content-type: application/json; charset=utf-8');
        header('Cache-control: max-age=3600');
        echo json_encode($response, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);
    }
    public function get($f3) {
        $request = new WebREST($f3->get('VERB'), @$f3->get('PARAMS.apiname'), @$f3->get('PARAMS.id'));
        $result = $request->process();
        if ($result) {
            $this->respond($result);
            $f3->status(200);
        }
        else $f3->status(404);
    }
    public function post($f3) {
        $request = new WebREST($f3->get('VERB'), @$f3->get('PARAMS.apiname'), @$f3->get('PARAMS.id'));
        $result = $request->process();
        if ($result) {
            $this->respond($result);
            $f3->status(201);
        }
        else $f3->status(404);
    }
    public function put($f3) {
        $request = new WebREST($f3->get('VERB'), @$f3->get('PARAMS.apiname'), @$f3->get('PARAMS.id'));
        $result = $request->process();
        if ($result) {
            $this->respond($result);
            $f3->status(202);
        }
        else $f3->status(404);
    }
    public function delete($f3) {
        $request = new WebREST($f3->get('VERB'), @$f3->get('PARAMS.apiname'), @$f3->get('PARAMS.id'));
        $result = $request->process();
        if ($result) {
            $this->respond($result);
            $f3->status(202);
        }
        else $f3->status(404);
    }
}
Salin selepas log masuk

Dalam pengawal ini, empat kaedah ditakrifkan: dapatkan, hantar, letak dan padam. Dalam kaedah ini, kita perlu membuat instantiate objek Web REST dan memanggil kaedah prosesnya untuk mendapatkan data respons. Dari perspektif respons HTTP, data respons hendaklah dalam format JSON, jadi dalam kaedah respons, kami menggunakan kaedah json_encode PHP untuk menukar data respons kepada rentetan JSON dan mengeluarkannya kepada klien.
  1. Buat fail kelas Web/REST.php

Fail kelas ini digunakan untuk mengendalikan permintaan daripada pelayan API RESTful.

<?php
namespace Web;
class REST {
    private $verb;  // HTTP 请求方法
    private $apiname; // API名称
    private $id;    // API 记录id
    private $user;  // 用户认证信息
    protected $db;  // 数据库连接
    protected $base;    // 数据库基本名称
    protected $table;   // 表名
    protected $data;    // 用于 POST 和 PUT 请求中的数据
    protected $fields = array(); // 表字段名称
    protected $response_code = array(
        100 => 'Continue',
        101 => 'Switching Protocols',
        200 => 'OK',
        201 => 'Created',
        202 => 'Accepted',
        203 => 'Non-Authoritative Information',
        204 => 'No Content',
        205 => 'Reset Content',
        206 => 'Partial Content',
        300 => 'Multiple Choices',
        301 => 'Moved Permanently',
        302 => 'Found',
        303 => 'See Other',
        304 => 'Not Modified',
        305 => 'Use Proxy',
        307 => 'Temporary Redirect',
        400 => 'Bad Request',
        401 => 'Unauthorized',
        402 => 'Payment Required',
        403 => 'Forbidden',
        404 => 'Not Found',
        405 => 'Method Not Allowed',
        406 => 'Not Acceptable',
        407 => 'Proxy Authentication Required',
        408 => 'Request Timeout',
        409 => 'Conflict',
        410 => 'Gone',
        411 => 'Length Required',
        412 => 'Precondition Failed',
        413 => 'Request Entity Too Large',
        414 => 'Request-URI Too Long',
        415 => 'Unsupported Media Type',
        416 => 'Requested Range Not Satisfiable',
        417 => 'Expectation Failed',
        500 => 'Internal Server Error',
        501 => 'Not Implemented',
        502 => 'Bad Gateway',
        503 => 'Service Unavailable',
        504 => 'Gateway Timeout',
        505 => 'HTTP Version Not Supported'
    );
    public function __construct($verb, $apiname, $id = null, $data = null) {
        $this->verb = $verb;
        $this->apiname = $apiname;
        $this->id = $id;
        $this->data = $data;
        $this->db = Base::instance()->get('DB');
    }
    public function process() {
            //$sql = "SELECT...";
        ...
        }
    }
}
Salin selepas log masuk

Dalam fail kelas ini, kami melaksanakan kelas REST yang mengendalikan permintaan daripada pelayan API RESTful. Kelas mengandungi jenis kaedah permintaan HTTP, nama API, ID rekod API, data untuk diproses, dsb. Kelas ini mengendalikan pangkalan data, mendapatkan data yang berkaitan, mencipta permintaan dan mengembalikan data tindak balas.
  1. IV. Kesimpulan
Seperti yang kita lihat sebelum ini, adalah sangat mudah untuk membangunkan perkhidmatan API RESTful menggunakan rangka kerja PHP Bebas Lemak, kerana ia adalah rangka kerja yang ringan itu sendiri, dan mekanisme penghalaan yang berkuasa bermakna Kami boleh menentukan laluan API dengan hebat fleksibiliti. Selain itu, ia menyediakan banyak modul yang sangat berguna untuk membantu kami menyelesaikan pembangunan aplikasi web dengan cepat. Inilah sebab utama mengapa kami memilih Bebas Lemak sebagai rangka kerja PHP Ia adalah ciri yang ringan, cekap, boleh dipercayai dan fleksibel yang membolehkan kami mencipta API RESTful yang indah.

Atas ialah kandungan terperinci Bangunkan perkhidmatan API RESTful yang cekap menggunakan rangka kerja PHP Bebas Lemak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan