Rumah >rangka kerja php >Swoole >Cara menggunakan rangka kerja Hyperf untuk pembangunan antara muka API

Cara menggunakan rangka kerja Hyperf untuk pembangunan antara muka API

WBOY
WBOYasal
2023-10-21 10:15:441504semak imbas

Cara menggunakan rangka kerja Hyperf untuk pembangunan antara muka API

Cara menggunakan rangka kerja Hyperf untuk pembangunan antara muka API

  1. Kata Pengantar
    Dalam pembangunan Web semasa, API telah menjadi bahagian yang tidak terpisahkan. Hyperf ialah rangka kerja berprestasi tinggi berdasarkan coroutine Swoole dan PHP Ia menyediakan pelbagai alat dan komponen untuk memudahkan pembangun membina antara muka API berprestasi tinggi dengan cepat. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Hyperf untuk pembangunan antara muka API dan menyediakan contoh kod khusus.
  2. Persediaan persekitaran
    Pertama sekali, kita perlu menyediakan persekitaran pembangunan rangka kerja Hyperf dalam persekitaran setempat. Anda boleh menggunakan alat Komposer untuk mencipta projek Hyperf dengan menjalankan arahan berikut dalam terminal:

    composer create-project hyperf/hyperf hyperf-demo
  3. Buat Pengawal API
    Dalam rangka kerja Hyperf, kami boleh lulus Cipta pengawal untuk menentukan antara muka API. Dalam terminal, tukar ke direktori akar projek dan laksanakan arahan berikut untuk mencipta pengawal API:

    php bin/hyperf.php make:controller User

    Ini akan mencipta API bernama fail pengawal UserController. App/Controller目录下创建一个名为UserController的控制器文件。

  4. 定义API接口方法
    UserController控制器文件中,我们可以定义多个方法来处理不同的API接口。例如,我们可以定义一个名为getUser的方法,用于获取用户信息。方法的代码示例如下:

    <?php
    
    declare(strict_types=1);
    
    namespace AppController;
    
    use HyperfHttpServerAnnotationController;
    use HyperfHttpServerAnnotationGetMapping;
    
    /**
     * @Controller(prefix="/user")
     */
    class UserController
    {
     /**
      * @GetMapping(path="get")
      */
     public function getUser(): array
     {
         return [
             'id' => 1,
             'name' => 'John Doe',
             'email' => 'john.doe@example.com',
         ];
     }
    }

    在上述代码中,我们使用了ControllerGetMapping注解来标识控制器和方法。GetMapping注解定义了API接口的请求方式和路径。

  5. 启动Hyperf服务
    在终端中,切换到项目根目录并执行以下命令来启动Hyperf服务:

    php bin/hyperf.php start

    启动成功后,Hyperf将监听在http://127.0.0.1:9501地址上。

  6. 测试API接口
    使用任意的API测试工具,如Postman或curl命令,发送GET请求到http://127.0.0.1:9501/user/get地址,即可获取用户信息。
  7. 接口验证与异常处理
    在实际开发中,我们经常需要对API接口进行验证和异常处理。Hyperf框架提供了丰富的验证和异常处理工具,可以轻松实现这些功能。

例如,我们可以在getUser方法中增加参数验证和异常抛出的代码:

<?php

declare(strict_types=1);

namespace AppController;

use HyperfHttpServerAnnotationController;
use HyperfHttpServerAnnotationGetMapping;
use AppRequestUserRequest;
use HyperfDiAnnotationInject;
use HyperfValidationContractValidatorFactoryInterface;

/**
 * @Controller(prefix="/user")
 */
class UserController
{
    /**
     * @Inject
     * @var ValidatorFactoryInterface
     */
    protected $validationFactory;

    /**
     * @GetMapping(path="get")
     */
    public function getUser(UserRequest $request): array
    {
        $validator = $this->validationFactory->make($request->all(), $request->rules());

        if ($validator->fails()) {
            throw new InvalidArgumentException($validator->errors()->first());
        }

        return [
            'id' => 1,
            'name' => 'John Doe',
            'email' => 'john.doe@example.com',
        ];
    }
}

在上述代码中,我们使用了UserRequest类来定义用户请求参数的验证规则。通过依赖注入获取到ValidatorFactoryInterface接口,并使用其make方法创建验证器。如果验证失败,我们抛出了一个InvalidArgumentException

  1. Tentukan kaedah antara muka API
    Dalam fail pengawal UserController, kami boleh mentakrifkan berbilang kaedah untuk mengendalikan antara muka API yang berbeza . Sebagai contoh, kita boleh mentakrifkan kaedah bernama getUser untuk mendapatkan maklumat pengguna. Contoh kod kaedah adalah seperti berikut:
  2. rrreee
Dalam kod di atas, kami menggunakan anotasi Controller dan GetMapping untuk mengenal pasti pengawal dan kaedah . Anotasi GetMapping mentakrifkan kaedah permintaan dan laluan antara muka API. #🎜🎜##🎜🎜##🎜🎜##🎜🎜#Mulakan perkhidmatan Hyperf#🎜🎜#Di terminal, tukar ke direktori akar projek dan laksanakan arahan berikut untuk memulakan perkhidmatan Hyperf: #🎜🎜#rreee# 🎜🎜# Selepas permulaan yang berjaya, Hyperf akan mendengar pada alamat http://127.0.0.1:9501. #🎜🎜##🎜🎜##🎜🎜#Uji antara muka API#🎜🎜#Gunakan sebarang alat ujian API, seperti Posmen atau arahan curl, untuk menghantar permintaan GET ke http://127.0.0.1:9501 /user /getalamat untuk mendapatkan maklumat pengguna. #🎜🎜##🎜🎜#Pengesahan antara muka dan pengendalian pengecualian#🎜🎜#Dalam pembangunan sebenar, kami selalunya perlu mengesahkan dan pengecualian mengendalikan antara muka API. Rangka kerja Hyperf menyediakan alat pengesahan dan pengendalian pengecualian yang kaya untuk melaksanakan fungsi ini dengan mudah. #🎜🎜##🎜🎜##🎜🎜#Sebagai contoh, kita boleh menambah pengesahan parameter dan kod lontaran pengecualian dalam kaedah getUser: #🎜🎜#rrreee#🎜🎜#Dalam kod di atas, kami menggunakan kelas UserRequest untuk mentakrifkan peraturan pengesahan bagi parameter permintaan pengguna. Dapatkan antara muka ValidatorFactoryInterface melalui suntikan kebergantungan dan gunakan kaedah make untuk mencipta validator. Jika pengesahan gagal, kami membuang pengecualian InvalidArgumentException. #🎜🎜##🎜🎜##🎜🎜#Kesimpulan#🎜🎜#Melalui pengenalan artikel ini, kami telah mempelajari cara menggunakan rangka kerja Hyperf untuk pembangunan antara muka API dan menyediakan contoh kod khusus. Rangka kerja Hyperf menyediakan pelbagai alatan dan komponen untuk membantu pembangun membina antara muka API berprestasi tinggi dengan cepat. Saya harap artikel ini akan membantu anda dalam pembangunan antara muka API. #🎜🎜##🎜🎜#

Atas ialah kandungan terperinci Cara menggunakan rangka kerja Hyperf untuk pembangunan antara muka API. 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