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.
├─API/ │ ├─f3/ │ │ ├─lib/ │ │ ├─... │ ├─index.php
<?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();
<?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); } }
<?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..."; ... } } }
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!