Hướng dẫn rest api tutorial php pdf - phần còn lại api hướng dẫn php pdf

Hướng dẫn từng bước để xây dựng API REST PHP [ebook miễn phí]

Tải xuống Ebook ngay bây giờ

Hướng dẫn rest api tutorial php pdf - phần còn lại api hướng dẫn php pdf

Chia sẻ chi tiết liên hệ của bạn và chúng tôi sẽ gửi liên kết tải xuống đến hộp thư đến của bạn.

Cảm ơn

Sách điện tử của bạn là trên nó cách với hộp thư đến của bạn.

Hãy cho bạn bè của bạn biết về cuốn sách này

Hướng dẫn rest api tutorial php pdf - phần còn lại api hướng dẫn php pdf

Nếu bạn là nhà phát triển PHP với một ý tưởng yêu cầu các quy trình xác thực dựa trên API, cơ bản và mã thông báo REST, thì ebook này là dành cho bạn. Ở đây bạn sẽ tìm thấy việc triển khai API REST trong các khung PHP như Symfony, Laravel và Slim.

REST là tiêu chuẩn công nghiệp mới nhất để tạo các cuộc gọi HTTP để truy cập và thao tác dữ liệu trong các ứng dụng PHP. Sau khi được tạo, bạn sẽ tìm hiểu cách kiểm tra các cuộc gọi API và các quy trình xác thực người dùng thông qua Postman (các nhà phát triển dự kiến ​​sẽ biết cách tạo các URL được tham số hóa để nhận, đăng và yêu cầu liên quan)

Key Takeaways:

  • Tầm quan trọng của API REST PHP trong các ứng dụng CMS.
  • Hướng dẫn tạo API REST PHP trong:
    • Mảnh mai
    • Lumen Micro
    • Symfony
    • Codeigniter
    • Yii2

Hướng dẫn rest api tutorial php pdf - phần còn lại api hướng dẫn php pdf

Thậm chí nhiều thứ tốt hơn

Hướng dẫn rest api tutorial php pdf - phần còn lại api hướng dẫn php pdf

Hướng dẫn API PHP & REST để tìm hiểu API PHP & REST trực tuyến miễn phí.

Phần còn lại và các API khác được sử dụng để cung cấp thông tin liên lạc giữa hai hệ thống qua mạng. Do đó, sử dụng REST (là viết tắt của Truyền trạng thái đại diện) bạn có thể tạo, đọc, cập nhật hoặc xóa thông tin giữa các ứng dụng khác nhau qua giao thức Internet hoặc HTTP.

Hướng dẫn này bao gồm các hoạt động HTTP GET, (đặt), xóa, đăng (cập nhật) bằng các chức năng thư viện PHP Curl. JSON & XML là hai định dạng trao đổi dữ liệu phổ biến.

Trong khóa đào tạo API PHP & REST trực tuyến này, chúng tôi sẽ sử dụng API Dummy REST để thực hiện các hoạt động CRUD bằng các chương trình PHP đơn giản

PHP: API REST - Giới thiệu

Trong hướng dẫn này, chúng tôi sẽ tìm hiểu về API PHP & REST. REST API cung cấp giao tiếp qua mạng bằng nhiều tiêu chuẩn như HTTP, JSON, CURL và XML.

PHP: API REST - File_Get_Contents ()

Có hai phương pháp phổ biến để tìm nạp dữ liệu API REST trong PHP. Hoặc bạn có thể sử dụng chức năng tích hợp PHP File_Get_Contents () hoặc sử dụng các lệnh Curl. Làm việc với dữ liệu JSON trong API XML & Mạnh

PHP: API REST - Nhận dữ liệu bằng Curl

Trong hướng dẫn này, chúng tôi sẽ học cách lấy dữ liệu API bằng các hàm Curl. Curl là gì? Curl (là viết tắt của URL máy khách) là một công cụ dòng lệnh để truyền dữ liệu giữa các máy chủ. Nó…

PHP: API REST - Đăng dữ liệu bằng Curl

Trong hướng dẫn này, chúng tôi sẽ học cách đăng dữ liệu API bằng các hàm Curl. Một bài đăng HTTP thường được sử dụng để tạo nội dung mới. Nếu bạn không quen thuộc với Curl cơ bản

PHP: API REST - Xóa dữ liệu bằng Curl

Trong hướng dẫn này, chúng tôi sẽ học cách xóa một số dữ liệu API REST bằng các hàm Curl trong PHP. Nếu bạn không quen thuộc với quy trình và chức năng Curl cơ bản, hãy đọc các chức năng trước đó

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

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
5

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

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.

Chúng tôi có thể cài đặt các phụ thuộc của mình ngay bây giờ:

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

Chúng tôi sẽ sử dụng MySQL để cung cấp năng lượng cho API đơn giản của chúng tôi. Chúng tôi sẽ tạo một cơ sở dữ liệu mới và người dùng cho ứng dụng 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

API REST của chúng tôi sẽ chỉ đối phó với một thực thể duy nhất: người, với các trường sau:

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;
0,
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;
1,
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;
2,
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;
3,
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;
4. Nó sẽ cho phép chúng tôi xác định con người và tối đa hai cha mẹ cho mỗi người (liên kết với các hồ sơ khác trong cơ sở dữ liệu của chúng tôi). Hãy để tạo bảng cơ sở dữ liệu trong MySQL:

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;

Chúng tôi sẽ thêm các biến kết nối cơ sở dữ liệu vào tệp

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 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
5

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

Sau đó, chúng tôi sẽ nhập thông tin đăng nhập cục bộ của chúng tôi vào tệp .ENV (không được lưu trữ trong repo, hãy 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

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

Bây giờ chúng tôi có thể tạo một lớp để giữ kết nối cơ sở dữ liệu của mình và thêm khởi tạo kết nối vào tệp bootstrap.php của chúng tôi:

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;
    }
}

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 (phiên bản đầy đủ)


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

use Src\System\DatabaseConnector;

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

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

Hãy cùng tạo một tệp

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
0 tạo bảng
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
1 của chúng tôi và chèn một số bản ghi trong đó để kiểm tra:

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());
}

Cơ sở dữ liệu của chúng tôi đã được thiết lập! Nếu bạn muốn đặt lại nó, chỉ cần thả bảng

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
3 trong MySQL và sau đó chạy
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
4 (tôi đã không thêm câu lệnh thả vào máy gieo hạt để đề phòng chống lại việc chạy nó do nhầm lẫn).

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

Có nhiều mẫu để làm việc với cơ sở dữ liệu trong bối cảnh hướng đối tượng, từ việc thực hiện đơn giản các câu lệnh SQL trực tiếp khi cần (theo cách thủ tục) đến các hệ thống ORM phức tạp (hai trong số các lựa chọn ORM phổ biến nhất trong PHP là hùng hồn và học thuyết) . Đối với API đơn giản của chúng tôi, thật hợp lý khi sử dụng một mẫu đơn giản vì vậy chúng tôi sẽ đi với một cổng bàn. Chúng tôi thậm chí còn bỏ qua việc tạo một lớp

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
1 (như mẫu cổ điển sẽ yêu cầu) và chỉ đi với lớp
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
6. Chúng tôi sẽ thực hiện các phương thức để trả về tất cả các hồ sơ, trả lại một người cụ thể và thêm/cập nhật/xóa một người.

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!