cari
Rumahpembangunan bahagian belakangmasalah PHPBagaimana untuk membina pelayan API menggunakan PHP

Dengan perkembangan pesat mudah alih, pengkomputeran awan, Internet Perkara dan teknologi lain, API telah menjadi cara penting interaksi data antara pelbagai aplikasi dan sistem. Dalam bidang pembangunan web, PHP, sebagai bahasa back-end yang popular, menyediakan banyak perpustakaan dan rangka kerja yang memudahkan pelaksanaan API. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membina pelayan API dan berkongsi keseluruhan proses daripada reka bentuk hingga pelaksanaan.

1. Analisis keperluan dan idea reka bentuk

Sebelum melaksanakan pelayan API, kami perlu menjelaskan keperluan dan idea reka bentuk. Artikel ini melaksanakan pelayan API mudah, dan keperluannya boleh diringkaskan seperti berikut:

  1. menyokong protokol HTTP dan boleh mengendalikan GET, POST dan permintaan lain
  2. boleh menghuraikan parameter URL dan melaksanakan API RESTful;
  3. boleh mengembalikan data dalam format JSON;
  4. Untuk mencapai keperluan di atas, kami boleh mempertimbangkan idea reka bentuk berikut:

Gunakan pakej sambungan PHP Slim atau Lumen untuk membina pelayan API, yang menyediakan penghalaan yang baik, alatan pengaturcaraan berstruktur seperti perisian tengah dan pengawal dan mekanisme pemalam yang kaya;
  1. menghuraikan parameter URL dalam penghalaan dan menggunakan rangka kerja OAuth2 untuk melindungi keselamatan API
  2. dapatkan dalam pengawal Permintaan parameter , panggil model untuk mengakses pangkalan data atau sumber data lain dan data output dalam format JSON.
  3. 2. Bina persekitaran pembangunan

Sebelum membina pelayan API, kita perlu menyediakan persekitaran pembangunan yang diperlukan seperti PHP dan MySQL. Anda boleh memilih untuk menggunakan persekitaran pembangunan bersepadu (IDE) seperti PHPStorm, Eclipse, dsb., atau anda boleh menggunakan editor ringan seperti Visual Studio Code, Sublime Text, dsb. Artikel ini mengambil PHPStorm sebagai contoh.

Pasang PHPStorm dan persekitaran PHP: Muat turun PHPStorm Semasa proses pemasangan, anda akan digesa untuk memasang persekitaran PHP secara lalai, atau anda boleh memilih laluan pemasangan sendiri. Selepas pemasangan selesai, jalankan PHPStorm, buka Keutamaan, dan tambahkan penterjemah PHP dalam Bahasa & Rangka Kerja > PHP.
  1. Pasang MySQL: Muat turun dan pasang MySQL, buat dan konfigurasikan pangkalan data.
  2. Pasang Komposer: Komposer ialah pengurus pergantungan untuk PHP, yang boleh memudahkan kerja pembangunan PHP dengan sangat baik. Jalankan arahan berikut dalam baris arahan untuk memasang Komposer:
Selepas pemasangan selesai, alihkan composer.phar ke laluan yang tersedia secara global, seperti /usr/bin/composer.
php -r "readfile('https://getcomposer.org/installer');" | php

3. Bina pelayan API

Dengan persekitaran pembangunan di atas, kita boleh mula membina pelayan API.

Buat projek: Buat projek PHP baharu dalam PHPStorm dan pasang rangka kerja Slim atau Lumen menggunakan Komposer:
atau
composer require slim/slim

Nota: Jika anda memilih untuk menggunakan rangka kerja Lumen, anda perlu menghidupkan suis $app->withFacades() dan $app->withEloquent() dalam fail bootstrap/app.php untuk menggunakan ORM Facade dan Eloquent fungsi yang disediakan oleh Lumen .
composer require illuminate/routing illuminate/http

Mencipta laluan: Mencipta laluan dan perisian tengah adalah mudah dalam rangka kerja Slim atau Lumen. Cipta fail route.php dalam direktori akar, contohnya:
Terdapat 3 laluan yang ditakrifkan di sini:
$app->get('/hello/{name}', function ($request, $response, $args) {
    $name = $args['name'];
    $response->getBody()->write("Hello, $name");
    return $response;
});

$app->get('/users', 'UsersController:index');

$app->post('/users', 'UsersController:create');

/hello/{name}: accepts nama Parameter, mengembalikan rentetan "Hello, name"; memanggil kaedah cipta UsersController mencipta rekod pengguna baharu.
  • Buat perisian tengah: Menambah perisian tengah pada penghalaan boleh mencapai beberapa prapemprosesan, penapisan, kebenaran dan fungsi lain. Cipta fail middleware.php dalam direktori akar, contohnya:
Perisian tengah JwtAuthMiddleware ditakrifkan di sini untuk mengesahkan token dan kebenaran kebenaran OAuth2.
  1. Buat pengawal: Buat fail pengawal, seperti UsersController.php, dalam direktori akar untuk melaksanakan semua kaedah yang ditentukan oleh laluan. Struktur kod pengawal boleh merujuk kepada contoh berikut:
$app->add(new JwtAuthMiddleware());

Pengawal UsersController ditakrifkan di sini, termasuk kaedah indeks dan cipta, yang sepadan dengan permintaan /users GET dan /users POST masing-masing. Gunakan Eloquent ORM untuk mengendalikan jadual data pengguna (User::all() dan $user->save()) dan kembalikan respons dalam format JSON.
  1. Jalankan pelayan API: Masukkan direktori projek pada baris arahan dan laksanakan arahan berikut:
namespace App\Controllers;

use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use App\Models\User;

class UsersController {
    
    public function index(Request $request, Response $response) {
        $users = User::all();
        $response = $response->withJson($users);
        return $response;
    }
    
    public function create(Request $request, Response $response) {
        $data = $request->getParsedBody();
        $user = new User;
        $user->name = $data['name'];
        $user->email = $data['email'];
        $user->password = password_hash($data['password'], PASSWORD_DEFAULT);
        $user->save();
        $response = $response->withJson($user);
        return $response;
    }
    
}

Pelayan web PHP terbina dalam dimulakan di sini , mendengar pada port 8000 . Akses http://localhost:8000/hello/world dalam penyemak imbas Dalam keadaan biasa, rentetan "Hello, world" harus dikembalikan. Apabila mengakses http://localhost:8000/users, data format JSON semua pengguna harus dikembalikan.
  1. 4. Keizinan OAuth2
Secara lalai, pelayan API tidak selamat kerana sesiapa sahaja boleh mengakses antara muka dan mengubah suai data. Untuk melindungi API, kami boleh menggunakan kebenaran OAuth2. OAuth2 ialah protokol kebenaran standard yang boleh membenarkan aplikasi pihak ketiga untuk mengakses sumber yang dilindungi pengguna tertentu pada pelayan sumber tanpa mendedahkan nama pengguna dan kata laluan. Dalam artikel ini, kami menggunakan rangka kerja JWT Firebase untuk melaksanakan kebenaran OAuth2.
php -S localhost:8000 -t public

Pasang rangka kerja Firebase JWT: Gunakan Komposer untuk memasang rangka kerja Firebase JWT:

    Buat pelayan kebenaran: Buat fail AuthorizationServer.php dalam akar direktori, Contohnya:
composer require firebase/php-jwt
Ini mentakrifkan pelayan kebenaran AuthorizationServer, yang mengandungi dua kaedah:
    • getToken:接受客户端传递的email和password,生成access token并返回给客户端;
    • authenticate:接受客户端传递的access token,验证并返回用户对象。

    这里使用了JWT加密框架,将用户信息存储在token中,并使用HS256算法加密。

    1. 创建中间件:在根目录下创建中间件文件JwtAuthMiddleware.php,例如:
    namespace App\Middlewares;
    
    use Psr\Http\Message\ServerRequestInterface as Request;
    use Psr\Http\Message\ResponseInterface as Response;
    use App\AuthorizationServer;
    
    class JwtAuthMiddleware {
        
        public function __invoke(Request $request, Response $response, $next) {
            try {
                $user = AuthorizationServer::authenticate($request);
                $request = $request->withAttribute('user', $user);
                return $next($request, $response);
            } catch (Exception $e) {
                return $response->withStatus(401)->withJson([
                    'error' => $e->getMessage()
                ]);
            }
        }
        
    }

    这里定义了一个JwtAuthMiddleware中间件,用户验证客户端请求的access token的有效性,并在后面的控制器中通过$request->getAttribute('user')获取到用户对象。

    1. 更新路由:在路由中加入OAuth2授权相关的路由和中间件。在routes.php文件中增加以下代码:
    $app->post('/auth/token', 'AuthorizationServer:getToken');
    
    $app->group('', function () use ($app) {
        $app->get('/users/@id', 'UsersController:getUser');
        $app->put('/users/@id', 'UsersController:updateUser');
        $app->delete('/users/@id', 'UsersController:deleteUser');
    })->add(new JwtAuthMiddleware());

    这里定义了一个/auth/token路由,用于获取访问令牌。另外,对于需要OAuth2授权的路由(getUser、updateUser和deleteUser),使用$app->group()方法包裹其中,并添加JwtAuthMiddleware中间件。

    五、总结

    本文介绍了如何使用PHP搭建API服务器,基于Slim或Lumen框架,解析URL参数、返回JSON格式的数据,并使用OAuth2框架保护API的安全性。使用这种方式搭建API服务器,可以快速、高效地开发出各种类型的RESTful API。但是,具体实现还需要根据实际需求进行适当调整和优化。

    Atas ialah kandungan terperinci Bagaimana untuk membina pelayan API menggunakan PHP. 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
    Asid vs pangkalan data asas: perbezaan dan bila menggunakan setiap.Asid vs pangkalan data asas: perbezaan dan bila menggunakan setiap.Mar 26, 2025 pm 04:19 PM

    Artikel ini membandingkan model pangkalan data asid dan asas, memperincikan ciri -ciri mereka dan kes penggunaan yang sesuai. Asid mengutamakan integriti data dan konsistensi, sesuai untuk aplikasi kewangan dan e-dagang, sementara asas memberi tumpuan kepada ketersediaan dan

    PHP Secure File Muat naik: Mencegah kelemahan berkaitan fail.PHP Secure File Muat naik: Mencegah kelemahan berkaitan fail.Mar 26, 2025 pm 04:18 PM

    Artikel ini membincangkan mendapatkan muat naik fail PHP untuk mengelakkan kelemahan seperti suntikan kod. Ia memberi tumpuan kepada pengesahan jenis fail, penyimpanan selamat, dan pengendalian ralat untuk meningkatkan keselamatan aplikasi.

    Pengesahan Input PHP: Amalan Terbaik.Pengesahan Input PHP: Amalan Terbaik.Mar 26, 2025 pm 04:17 PM

    Artikel membincangkan amalan terbaik untuk pengesahan input PHP untuk meningkatkan keselamatan, memberi tumpuan kepada teknik seperti menggunakan fungsi terbina dalam, pendekatan putih, dan pengesahan sisi pelayan.

    PHP API Kadar Mengehadkan: Strategi Pelaksanaan.PHP API Kadar Mengehadkan: Strategi Pelaksanaan.Mar 26, 2025 pm 04:16 PM

    Artikel ini membincangkan strategi untuk melaksanakan kadar API yang mengehadkan PHP, termasuk algoritma seperti baldi token dan baldi bocor, dan menggunakan perpustakaan seperti simfoni/kadar-limiter. Ia juga meliputi pemantauan, had kadar penyesuaian secara dinamik, dan tangan

    PHP Kata Laluan Hashing: password_hash dan password_verify.PHP Kata Laluan Hashing: password_hash dan password_verify.Mar 26, 2025 pm 04:15 PM

    Artikel ini membincangkan manfaat menggunakan password_hash dan password_verify dalam php untuk mendapatkan kata laluan. Hujah utama ialah fungsi ini meningkatkan perlindungan kata laluan melalui penjanaan garam automatik, algoritma hashing yang kuat, dan secur

    OWASP Top 10 PHP: Huraikan dan mengurangkan kelemahan umum.OWASP Top 10 PHP: Huraikan dan mengurangkan kelemahan umum.Mar 26, 2025 pm 04:13 PM

    Artikel ini membincangkan kelemahan OWASP 10 dalam strategi PHP dan mitigasi. Isu -isu utama termasuk suntikan, pengesahan yang rosak, dan XSS, dengan alat yang disyorkan untuk memantau dan mendapatkan aplikasi PHP.

    Pencegahan PHP XSS: Bagaimana Melindungi Terhadap XSS.Pencegahan PHP XSS: Bagaimana Melindungi Terhadap XSS.Mar 26, 2025 pm 04:12 PM

    Artikel ini membincangkan strategi untuk mencegah serangan XSS di PHP, memberi tumpuan kepada sanitisasi input, pengekodan output, dan menggunakan perpustakaan dan kerangka kerja yang meningkatkan keselamatan.

    PHP Interface vs Kelas Abstrak: Bila Menggunakan Setiap.PHP Interface vs Kelas Abstrak: Bila Menggunakan Setiap.Mar 26, 2025 pm 04:11 PM

    Artikel ini membincangkan penggunaan antara muka dan kelas abstrak dalam PHP, memberi tumpuan kepada masa untuk menggunakan setiap. Antara muka menentukan kontrak tanpa pelaksanaan, sesuai untuk kelas yang tidak berkaitan dan warisan berganda. Kelas Abstrak Memberi Funct Biasa

    See all articles

    Alat AI Hot

    Undresser.AI Undress

    Undresser.AI Undress

    Apl berkuasa AI untuk mencipta foto bogel yang realistik

    AI Clothes Remover

    AI Clothes Remover

    Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

    Undress AI Tool

    Undress AI Tool

    Gambar buka pakaian secara percuma

    Clothoff.io

    Clothoff.io

    Penyingkiran pakaian AI

    AI Hentai Generator

    AI Hentai Generator

    Menjana ai hentai secara percuma.

    Artikel Panas

    R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
    1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Tetapan grafik terbaik
    1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
    Akan R.E.P.O. Ada Crossplay?
    1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

    Alat panas

    Versi Mac WebStorm

    Versi Mac WebStorm

    Alat pembangunan JavaScript yang berguna

    Dreamweaver CS6

    Dreamweaver CS6

    Alat pembangunan web visual

    Muat turun versi mac editor Atom

    Muat turun versi mac editor Atom

    Editor sumber terbuka yang paling popular

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

    Pelayar Peperiksaan Selamat

    Pelayar Peperiksaan Selamat

    Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.