Hướng dẫn create restful api in php - tạo api yên tĩnh trong php

API REST là xương sống của phát triển web hiện đại. Hầu hết các ứng dụng web ngày nay được phát triển dưới dạng các ứng dụng một trang trên mặt trận, được kết nối với các API phụ trợ được viết bằng nhiều ngôn ngữ khác nhau. Có nhiều khung tuyệt vời có thể giúp bạn xây dựng API REST một cách nhanh chóng. Nền tảng API của Laravel/lum và Symfony là những ví dụ được sử dụng thường xuyên nhất trong hệ sinh thái PHP. Chúng cung cấp các công cụ tuyệt vời để xử lý các yêu cầu và tạo các phản hồi JSON với mã trạng thái HTTP chính xác. Chúng cũng giúp dễ dàng xử lý các vấn đề phổ biến như xác thực/ủy quyền, xác thực yêu cầu, chuyển đổi dữ liệu, phân trang, bộ lọc, điều chỉnh tốc độ, điểm cuối phức tạp với tài liệu phụ và tài liệu API.

Bạn chắc chắn không cần một khung phức tạp để xây dựng một API đơn giản nhưng an toàn. Trong bài viết này, tôi sẽ chỉ cho bạn cách xây dựng API REST đơn giản trong PHP từ đầu. Chúng tôi sẽ làm cho API an toàn bằng cách sử dụng OKTA làm nhà cung cấp ủy quyền của chúng tôi và triển khai luồng thông tin đăng nhập của khách hàng. Okta là một dịch vụ API cho phép bạn tạo, chỉnh sửa và lưu trữ an toàn tài khoản người dùng và dữ liệu tài khoản người dùng và kết nối chúng với một hoặc nhiều ứng dụng.

Có các luồng xác thực khác nhau trong OAuth 2.0, tùy thuộc vào việc ứng dụng máy khách là công khai hay riêng tư và nếu người dùng liên quan hay giao tiếp chỉ là máy từ máy. Luồng thông tin đăng nhập của khách hàng phù hợp nhất cho giao tiếp với máy đến máy, trong đó ứng dụng khách là riêng tư (và có thể được tin cậy để giữ bí mật). Vào cuối bài viết, tôi cũng sẽ chỉ cho bạn cách xây dựng một ứng dụng khách hàng thử nghiệm.

Mục lục

  • Tạo bộ xương dự án PHP cho API REST của bạn
  • Định cấu hình cơ sở dữ liệu cho API REST PHP của bạn
  • Thêm lớp cổng cho bảng người
  • Thực hiện API REST PHP
  • Bảo mật API REST PHP của bạn bằng OAuth 2.0
  • Thêm xác thực vào API REST PHP của bạn
  • Xây dựng một ứng dụng khách hàng mẫu (tập lệnh dòng lệnh) để kiểm tra API REST PHP
  • Tìm hiểu thêm về PHP, API REST an toàn và thông tin đăng nhập khách hàng OAuth 2.0

Tạo bộ xương dự án PHP cho API REST của bạn

Định cấu hình cơ sở dữ liệu cho API REST PHP của bạn


require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
5

{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}

Thêm lớp cổng cho bảng người

Thực hiện API REST PHP

Bảo mật API REST PHP của bạn bằng OAuth 2.0

Thêm xác thực vào API REST PHP của bạn

Xây dựng một ứng dụng khách hàng mẫu (tập lệnh dòng lệnh) để kiểm tra API REST PHP

mysql -uroot -p
CREATE DATABASE api_example CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'api_user'@'localhost' identified by 'api_password';
GRANT ALL on api_example.* to 'api_user'@'localhost';
quit
5

OKTAAUDIENCE=api://default
OKTAISSUER=
SCOPE=
OKTACLIENTID=
OKTASECRET=

Tìm hiểu thêm về PHP, API REST an toàn và thông tin đăng nhập khách hàng OAuth 2.0

Chúng tôi sẽ bắt đầu bằng cách tạo thư mục


require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
4 và tệp

require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
5 đơn giản trong thư mục hàng đầu chỉ với một phụ thuộc (hiện tại): Thư viện DOTENV cho phép chúng tôi giữ chi tiết xác thực Okta trong tệp

require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
6 bên ngoài kho lưu trữ mã của chúng tôi:

mysql -uroot -p
CREATE DATABASE api_example CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'api_user'@'localhost' identified by 'api_password';
GRANT ALL on api_example.* to 'api_user'@'localhost';
quit
8


require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');

Định cấu hình cơ sở dữ liệu cho API REST PHP của bạn

Thêm lớp cổng cho bảng người

mysql -uroot -p
CREATE DATABASE api_example CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'api_user'@'localhost' identified by 'api_password';
GRANT ALL on api_example.* to 'api_user'@'localhost';
quit

Thực hiện API REST PHP

mysql -uapi_user -papi_password api_example

CREATE TABLE person (
    id INT NOT NULL AUTO_INCREMENT,
    firstname VARCHAR(100) NOT NULL,
    lastname VARCHAR(100) NOT NULL,
    firstparent_id INT DEFAULT NULL,
    secondparent_id INT DEFAULT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (firstparent_id)
        REFERENCES person(id)
        ON DELETE SET NULL,
    FOREIGN KEY (secondparent_id)
        REFERENCES person(id)
        ON DELETE SET NULL
) ENGINE=INNODB;

Bảo mật API REST PHP của bạn bằng OAuth 2.0

mysql -uroot -p
CREATE DATABASE api_example CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'api_user'@'localhost' identified by 'api_password';
GRANT ALL on api_example.* to 'api_user'@'localhost';
quit
5

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=

Thêm xác thực vào API REST PHP của bạn


require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
6

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=api_example
DB_USERNAME=api_user
DB_PASSWORD=api_password

Xây dựng một ứng dụng khách hàng mẫu (tập lệnh dòng lệnh) để kiểm tra API REST PHP

mysql -uapi_user -papi_password api_example

CREATE TABLE person (
    id INT NOT NULL AUTO_INCREMENT,
    firstname VARCHAR(100) NOT NULL,
    lastname VARCHAR(100) NOT NULL,
    firstparent_id INT DEFAULT NULL,
    secondparent_id INT DEFAULT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (firstparent_id)
        REFERENCES person(id)
        ON DELETE SET NULL,
    FOREIGN KEY (secondparent_id)
        REFERENCES person(id)
        ON DELETE SET NULL
) ENGINE=INNODB;
8


namespace Src\System;

class DatabaseConnector {

    private $dbConnection = null;

    public function __construct()
    {
        $host = getenv('DB_HOST');
        $port = getenv('DB_PORT');
        $db   = getenv('DB_DATABASE');
        $user = getenv('DB_USERNAME');
        $pass = getenv('DB_PASSWORD');

        try {
            $this->dbConnection = new \PDO(
                "mysql:host=$host;port=$port;charset=utf8mb4;dbname=$db",
                $user,
                $pass
            );
        } catch (\PDOException $e) {
            exit($e->getMessage());
        }
    }

    public function getConnection()
    {
        return $this->dbConnection;
    }
}

Tìm hiểu thêm về PHP, API REST an toàn và thông tin đăng nhập khách hàng OAuth 2.0


require 'vendor/autoload.php';
use Dotenv\Dotenv;

use Src\System\DatabaseConnector;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

$dbConnection = (new DatabaseConnector())->getConnection();

Chúng tôi sẽ bắt đầu bằng cách tạo thư mục


require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
4 và tệp

require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
5 đơn giản trong thư mục hàng đầu chỉ với một phụ thuộc (hiện tại): Thư viện DOTENV cho phép chúng tôi giữ chi tiết xác thực Okta trong tệp

require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
6 bên ngoài kho lưu trữ mã của chúng tôi:

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
0


require 'bootstrap.php';

$statement = <<

try {
    $createTable = $dbConnection->exec($statement);
    echo "Success!\n";
} catch (\PDOException $e) {
    exit($e->getMessage());
}

Chúng tôi cũng đã cấu hình trình tải tự động PSR-4, sẽ tự động tìm kiếm các lớp PHP trong thư mục


require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
4.

Thêm lớp cổng cho bảng người

Thực hiện API REST PHP

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
7

OKTAAUDIENCE=api://default
OKTAISSUER=
SCOPE=
OKTACLIENTID=
OKTASECRET=
0

Rõ ràng, trong một hệ thống sản xuất, bạn sẽ muốn xử lý các ngoại lệ một cách duyên dáng hơn thay vì chỉ thoát với một thông báo lỗi.

Dưới đây là một số ví dụ về việc sử dụng cổng:

OKTAAUDIENCE=api://default
OKTAISSUER=
SCOPE=
OKTACLIENTID=
OKTASECRET=
1

Thực hiện API REST PHP

Chúng tôi sẽ triển khai API REST ngay bây giờ với các điểm cuối sau:

OKTAAUDIENCE=api://default
OKTAISSUER=
SCOPE=
OKTACLIENTID=
OKTASECRET=
2

Chúng tôi sẽ tạo một tệp

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
8 để đóng vai trò là bộ điều khiển phía trước của chúng tôi và xử lý các yêu cầu và
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
9 để xử lý các điểm cuối API (được gọi từ bộ điều khiển phía trước sau khi xác thực URI).

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=api_example
DB_USERNAME=api_user
DB_PASSWORD=api_password
0

OKTAAUDIENCE=api://default
OKTAISSUER=
SCOPE=
OKTACLIENTID=
OKTASECRET=
3

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
9

OKTAAUDIENCE=api://default
OKTAISSUER=
SCOPE=
OKTACLIENTID=
OKTASECRET=
4

Bạn có thể kiểm tra API bằng một công cụ như Postman. Đầu tiên, đi đến thư mục dự án và khởi động máy chủ PHP:

OKTAAUDIENCE=api://default
OKTAISSUER=
SCOPE=
OKTACLIENTID=
OKTASECRET=
5

Sau đó kết nối với

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=api_example
DB_USERNAME=api_user
DB_PASSWORD=api_password
2 với Postman và gửi các yêu cầu HTTP. Lưu ý: Khi thực hiện các yêu cầu đặt và đăng, hãy đảm bảo đặt loại cơ thể thành
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=api_example
DB_USERNAME=api_user
DB_PASSWORD=api_password
3, sau đó dán tải trọng vào định dạng JSON và đặt loại nội dung thành JSON (Ứng dụng/JSON).

Bảo mật API REST PHP của bạn bằng OAuth 2.0

Chúng tôi sẽ sử dụng OKTA làm máy chủ ủy quyền của chúng tôi và chúng tôi sẽ triển khai luồng thông tin đăng nhập của máy khách. Lưu lượng được khuyến nghị để xác thực máy tính đến máy khi khách hàng riêng tư và hoạt động như thế này: ứng dụng máy khách giữ ID máy khách và bí mật; Khách hàng chuyển các thông tin này cho OKTA và có được mã thông báo truy cập; Máy khách gửi mã thông báo truy cập đến máy chủ API REST; Máy chủ yêu cầu Okta cho một số siêu dữ liệu cho phép nó xác minh mã thông báo và xác thực mã thông báo (cách khác, nó chỉ có thể yêu cầu OKTA xác minh mã thông báo); Sau đó, máy chủ cung cấp tài nguyên API nếu mã thông báo hợp lệ hoặc trả lời mã trạng thái trái phép 401 nếu thiếu mã thông báo, hết hạn hoặc không hợp lệ.

Trước khi bạn bắt đầu, bạn sẽ cần một tài khoản nhà phát triển Okta miễn phí. Cài đặt OKTA CLI và chạy

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=api_example
DB_USERNAME=api_user
DB_PASSWORD=api_password
4 để đăng ký tài khoản mới. Nếu bạn đã có một tài khoản, hãy chạy
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=api_example
DB_USERNAME=api_user
DB_PASSWORD=api_password
5. Sau đó, chạy
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=api_example
DB_USERNAME=api_user
DB_PASSWORD=api_password
6. Chọn tên ứng dụng mặc định hoặc thay đổi nó khi bạn thấy phù hợp.

Okta CLI làm gì?

OKTA CLI sẽ tạo một ứng dụng dịch vụ OAuth 2.0 trong OKTA Org của bạn. Bạn sẽ thấy đầu ra như sau khi nó kết thúc:

OKTAAUDIENCE=api://default
OKTAISSUER=
SCOPE=
OKTACLIENTID=
OKTASECRET=
6

Chạy

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=api_example
DB_USERNAME=api_user
DB_PASSWORD=api_password
7 (hoặc
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=api_example
DB_USERNAME=api_user
DB_PASSWORD=api_password
8 trên Windows) để xem nhà phát hành và thông tin đăng nhập cho ứng dụng của bạn.

OKTAAUDIENCE=api://default
OKTAISSUER=
SCOPE=
OKTACLIENTID=
OKTASECRET=
7

Tên miền Okta của bạn là phần đầu tiên của công ty phát hành của bạn, trước

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=api_example
DB_USERNAME=api_user
DB_PASSWORD=api_password
9.

Lưu ý: Bạn cũng có thể sử dụng bảng điều khiển quản trị viên Okta để tạo ứng dụng của mình. Xem Tạo một ứng dụng dịch vụ để biết thêm thông tin.: You can also use the Okta Admin Console to create your app. See Create a Service App for more information.

Đây là những thông tin đăng nhập mà ứng dụng khách của bạn sẽ cần để xác thực. Trong ví dụ này, mã máy khách và máy chủ sẽ nằm trong cùng một kho lưu trữ, vì vậy chúng tôi cũng sẽ thêm các thông tin đăng nhập này vào tệp


require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
6 của chúng tôi (đảm bảo thay thế

namespace Src\System;

class DatabaseConnector {

    private $dbConnection = null;

    public function __construct()
    {
        $host = getenv('DB_HOST');
        $port = getenv('DB_PORT');
        $db   = getenv('DB_DATABASE');
        $user = getenv('DB_USERNAME');
        $pass = getenv('DB_PASSWORD');

        try {
            $this->dbConnection = new \PDO(
                "mysql:host=$host;port=$port;charset=utf8mb4;dbname=$db",
                $user,
                $pass
            );
        } catch (\PDOException $e) {
            exit($e->getMessage());
        }
    }

    public function getConnection()
    {
        return $this->dbConnection;
    }
}
1 và

namespace Src\System;

class DatabaseConnector {

    private $dbConnection = null;

    public function __construct()
    {
        $host = getenv('DB_HOST');
        $port = getenv('DB_PORT');
        $db   = getenv('DB_DATABASE');
        $user = getenv('DB_USERNAME');
        $pass = getenv('DB_PASSWORD');

        try {
            $this->dbConnection = new \PDO(
                "mysql:host=$host;port=$port;charset=utf8mb4;dbname=$db",
                $user,
                $pass
            );
        } catch (\PDOException $e) {
            exit($e->getMessage());
        }
    }

    public function getConnection()
    {
        return $this->dbConnection;
    }
}
2 bằng các giá trị từ trang này):

Thêm vào

mysql -uroot -p
CREATE DATABASE api_example CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'api_user'@'localhost' identified by 'api_password';
GRANT ALL on api_example.* to 'api_user'@'localhost';
quit
5:

OKTAAUDIENCE=api://default
OKTAISSUER=
SCOPE=
OKTACLIENTID=
OKTASECRET=
8

Thêm các khóa và giá trị này vào


require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
6:

OKTAAUDIENCE=api://default
OKTAISSUER=
SCOPE=
OKTACLIENTID=
OKTASECRET=
9

Đăng nhập vào Bảng điều khiển quản trị OKTA (Mẹo: Chạy

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=api_example
DB_USERNAME=api_user
DB_PASSWORD=api_password
5, Mở URL trong trình duyệt). Điều hướng đến bảo mật> API. Chọn máy chủ ủy quyền mặc định của bạn. Nhấp vào biểu tượng Chỉnh sửa, chuyển đến tab phạm vi và nhấp vào Thêm phạm vi để thêm phạm vi cho API còn lại. Đặt tên cho nó

namespace Src\System;

class DatabaseConnector {

    private $dbConnection = null;

    public function __construct()
    {
        $host = getenv('DB_HOST');
        $port = getenv('DB_PORT');
        $db   = getenv('DB_DATABASE');
        $user = getenv('DB_USERNAME');
        $pass = getenv('DB_PASSWORD');

        try {
            $this->dbConnection = new \PDO(
                "mysql:host=$host;port=$port;charset=utf8mb4;dbname=$db",
                $user,
                $pass
            );
        } catch (\PDOException $e) {
            exit($e->getMessage());
        }
    }

    public function getConnection()
    {
        return $this->dbConnection;
    }
}
6 và kiểm tra được đặt làm phạm vi mặc định.Security > API. Select your default Authorization Server. Click the Edit icon, go to the Scopes tab and click Add Scope to add a scope for the REST API. Name it

namespace Src\System;

class DatabaseConnector {

    private $dbConnection = null;

    public function __construct()
    {
        $host = getenv('DB_HOST');
        $port = getenv('DB_PORT');
        $db   = getenv('DB_DATABASE');
        $user = getenv('DB_USERNAME');
        $pass = getenv('DB_PASSWORD');

        try {
            $this->dbConnection = new \PDO(
                "mysql:host=$host;port=$port;charset=utf8mb4;dbname=$db",
                $user,
                $pass
            );
        } catch (\PDOException $e) {
            exit($e->getMessage());
        }
    }

    public function getConnection()
    {
        return $this->dbConnection;
    }
}
6 and check Set as a default scope.

Thêm phạm vi vào

mysql -uroot -p
CREATE DATABASE api_example CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'api_user'@'localhost' identified by 'api_password';
GRANT ALL on api_example.* to 'api_user'@'localhost';
quit
5:

và khóa có giá trị thành


require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
6:

Thêm xác thực vào API REST PHP của bạn

Chúng tôi sẽ sử dụng thư viện trình xác minh OKTA JWT. Nó yêu cầu một thư viện JWT (chúng tôi sẽ sử dụng


namespace Src\System;

class DatabaseConnector {

    private $dbConnection = null;

    public function __construct()
    {
        $host = getenv('DB_HOST');
        $port = getenv('DB_PORT');
        $db   = getenv('DB_DATABASE');
        $user = getenv('DB_USERNAME');
        $pass = getenv('DB_PASSWORD');

        try {
            $this->dbConnection = new \PDO(
                "mysql:host=$host;port=$port;charset=utf8mb4;dbname=$db",
                $user,
                $pass
            );
        } catch (\PDOException $e) {
            exit($e->getMessage());
        }
    }

    public function getConnection()
    {
        return $this->dbConnection;
    }
}
9) và thư viện tuân thủ PSR-7 (chúng tôi sẽ sử dụng

require 'vendor/autoload.php';
use Dotenv\Dotenv;

use Src\System\DatabaseConnector;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

$dbConnection = (new DatabaseConnector())->getConnection();
0). Chúng tôi sẽ cài đặt mọi thứ thông qua trình soạn thảo:


require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
0

Bây giờ chúng tôi có thể thêm mã ủy quyền vào bộ điều khiển phía trước của chúng tôi (nếu sử dụng khung, chúng tôi sẽ thực hiện việc này trong một phần mềm trung gian thay thế):

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=api_example
DB_USERNAME=api_user
DB_PASSWORD=api_password
0 (phiên bản đầy đủ cho rõ ràng)


require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
1

Xây dựng một ứng dụng khách hàng mẫu (tập lệnh dòng lệnh) để kiểm tra API REST PHP

Trong phần này, chúng tôi sẽ thêm một ứng dụng máy khách đơn giản (tập lệnh dòng lệnh sử dụng Curl) để kiểm tra API REST. Chúng tôi sẽ tạo một tệp PHP mới 'công khai/khách hàng.php' với một luồng rất đơn giản: nó sẽ truy xuất các chi tiết Okta (nhà phát hành, phạm vi, ID máy khách và bí mật) từ tệp .ENV, sau đó nó sẽ có được mã thông báo truy cập truy cập Từ Okta và nó sẽ chạy các cuộc gọi API để nhận tất cả người dùng và nhận một người dùng cụ thể (chuyển mã thông báo truy cập Okta trong tiêu đề ủy quyền).


require 'vendor/autoload.php';
use Dotenv\Dotenv;

use Src\System\DatabaseConnector;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

$dbConnection = (new DatabaseConnector())->getConnection();
2


require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// test code, should output:
// api://default
// when you run $ php bootstrap.php
echo getenv('OKTAAUDIENCE');
2

Bạn có thể chạy ứng dụng từ dòng lệnh bằng cách truy cập thư mục


require 'vendor/autoload.php';
use Dotenv\Dotenv;

use Src\System\DatabaseConnector;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

$dbConnection = (new DatabaseConnector())->getConnection();
3 và chạy:

(Don Tiết quên khởi động máy chủ nếu bạn đã không có!)

OKTAAUDIENCE=api://default
OKTAISSUER=
SCOPE=
OKTACLIENTID=
OKTASECRET=
5

Đó là nó!

Tìm hiểu thêm về PHP, API REST an toàn và thông tin đăng nhập khách hàng OAuth 2.0

Bạn có thể tìm thấy tất cả các mã từ ví dụ này trên GitHub, trong kho lưu trữ kích thước oktadeveloper/okta-php-core-rest-api-ví dụ.

Nếu bạn muốn đào sâu hơn vào các chủ đề được đề cập trong bài viết này, các tài nguyên sau đây là một điểm khởi đầu tuyệt vời:

  • Hướng dẫn khởi động nhanh Vue/PHP của chúng tôi
  • Tổng quan xác thực Okta
  • Thêm xác thực vào ứng dụng PHP của bạn trong 5 phút
  • Xây dựng đăng nhập đơn giản trong PHP

Giống như những gì bạn đã học được hôm nay? Theo dõi chúng tôi trên Twitter và đăng ký kênh YouTube của chúng tôi để có nội dung tuyệt vời hơn!

Bạn có thể tạo API REST trong PHP không?

Có nhiều khung tuyệt vời có thể giúp bạn xây dựng API REST một cách nhanh chóng. Nền tảng API của Laravel/lum và Symfony là những ví dụ được sử dụng thường xuyên nhất trong hệ sinh thái PHP. Chúng cung cấp các công cụ tuyệt vời để xử lý các yêu cầu và tạo các phản hồi JSON với mã trạng thái HTTP chính xác.. Laravel/Lumen and Symfony's API platform are the most often used examples in the PHP ecosystem. They provide great tools to process requests and generate JSON responses with the correct HTTP status codes.

PHP có tốt cho API REST không?

Có nhiều khung PHP có thể được sử dụng để tạo API REST.Bên cạnh những gì tôi đã đề cập ở trên, có một số khung Php phổ biến khác.Laravel, Symfony, Codeigniter, YII, CakePHP và những người khác đều có thể tạo API REST.Tùy thuộc vào nhu cầu của bạn, bất cứ ai trong số các khung đó có thể là tốt nhất cho bạn.. Besides what I've mentioned above, there are several other popular PHP frameworks. Laravel, Symfony, CodeIgniter, Yii, CakePHP, and others can all create REST APIs. Depending on your needs, anyone of those frameworks may be best for you.

API PHP RESTful là gì?

API REST là API cho phép các lập trình viên gửi và nhận thông tin từ các chương trình khác bằng các lệnh giao thức HTTP như GET và POST.Mặc dù API REST hoạt động với hầu hết các giao thức, nhưng nó được thiết kế đặc biệt để truyền dữ liệu qua giao thức HTTP.an API that allows programmers to send and receive information from other programs using HTTP protocol commands such as GET and POST. Although REST API works with most protocols, it is specially designed for transmitting data through the HTTP protocol.

Làm thế nào chúng ta có thể phát triển API trong PHP?

Tạo một cơ sở dữ liệu và bảng với dữ liệu giả.Để tạo cơ sở dữ liệu chạy truy vấn sau.Tạo cơ sở dữ liệu allphptricks;....
Tạo kết nối cơ sở dữ liệu.Chỉ cần tạo một db.Tệp PHP và dán kết nối cơ sở dữ liệu sau trong đó.....
Tạo tệp API REST.Tạo API.Tệp PHP và dán tập lệnh sau trong đó ..