PHP gọi dịch vụ web REST
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 giao diện người dùng, đượ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ó rất nhiều framework tuyệt vời có thể giúp bạn xây dựng REST API một cách nhanh chóng. Nền tảng API của Laravel/Lumen và Symfony là những ví dụ được sử dụng thường xuyên nhất trong hệ sinh thái PHP. Họ cung cấp các công cụ tuyệt vời để xử lý yêu cầu và tạo 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 nguyên phụ và tài liệu API Show
Bạn chắc chắn không cần một framework 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 một API REST đơn giản trong PHP từ đầu. Chúng tôi sẽ làm cho API trở nên 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 xác thực 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, đồng thời 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 khách là công khai hay riêng tư và liệu có người dùng tham gia hay chỉ giao tiếp giữa máy với máy. Luồng thông tin xác thực ứng dụng khách phù hợp nhất cho giao tiếp giữa các máy trong đó ứng dụng khách ở chế độ riêng tư (và có thể được tin cậy để giữ bí mật). Ở cuối bài, tôi sẽ chỉ cho bạn cách xây dựng một ứng dụng khách thử nghiệm. Mục lục Tạo khung dự án PHP cho API REST của bạnChúng tôi sẽ bắt đầu bằng cách tạo một thư mục 9 và một tệp 0 đơn giản trong thư mục trên cùng chỉ với một phụ thuộc (hiện tại). thư viện DotEnv sẽ cho phép chúng tôi giữ chi tiết xác thực Okta của mình trong tệp 1 bên ngoài kho lưu trữ mã của chúng tôi 0
Chúng tôi cũng đã định cấu hình trình tải tự động PSR-4 sẽ tự động tìm các lớp PHP trong thư mục 9Chúng tôi có thể cài đặt các phụ thuộc của mình ngay bây giờ
Bây giờ chúng tôi có một thư mục 4 và phần phụ thuộc DotEnv đã được cài đặt (chúng tôi cũng có thể sử dụng trình tải tự động của mình để tải các lớp của chúng tôi từ 9 mà không cần lệnh gọi 6)Hãy tạo một tệp 7 cho dự án của chúng tôi với hai dòng trong đó, vì vậy thư mục 4 và tệp 1 cục bộ của chúng tôi sẽ bị bỏ qua
Tiếp theo, chúng tôi sẽ tạo một tệp 40 cho các biến xác thực Okta của chúng tôi 40
và một tệp 1 nơi chúng tôi sẽ điền thông tin chi tiết thực tế của mình từ tài khoản Okta của chúng tôi sau (nó sẽ bị Git bỏ qua vì vậy nó sẽ không kết thúc trong kho lưu trữ của chúng tôi)Chúng tôi sẽ cần một tệp 43 để tải các biến môi trường của chúng tôi (sau này, nó cũng sẽ thực hiện một số bước khởi động bổ sung cho dự án của chúng tôi) 43 4Định cấu hình cơ sở dữ liệu cho PHP REST API của bạnChú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 cơ sở dữ liệu và người dùng mới cho ứng dụng của chúng tôi 1API còn lại của chúng tôi sẽ chỉ xử lý một thực thể duy nhất. Người, với các trường sau. ________ 145, ________ 146, ________ 147, ________ 148, ________ 149. Nó sẽ cho phép chúng tôi xác định mọi người và tối đa hai phụ huynh cho mỗi người (liên kết đến các bản ghi 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 7Chúng tôi sẽ thêm các biến kết nối cơ sở dữ liệu vào tệp 40 của chúng tôi 40 0Sau đó, chúng tôi sẽ nhập thông tin đăng nhập địa phương của mình vào. env (không được lưu trữ trong repo, nhớ chứ?) 1 2Bây giờ chúng ta 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 phần khởi tạo kết nối vào bootstrap của chúng ta. tập tin php 13 4 43 (bản đầy đủ) 0Hãy tạo một tệp 15 để tạo bảng 16 của chúng ta và chèn một số bản ghi vào đó để kiểm tra 15 1Cơ sở dữ liệu của chúng tôi đã hoàn tất. Nếu bạn muốn đặt lại nó, chỉ cần thả bảng 18 vào MySQL rồi chạy 19 (Tôi không thêm câu lệnh drop vào seeder để đề phòng chạy nhầm)Thêm một lớp cổng cho bảng ngườiCó nhiều mẫu để làm việc với cơ sở dữ liệu trong ngữ cảnh hướng đối tượng, từ thực thi đơ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à Eloquent và Doctrine). Đối với API đơn giản của chúng tôi, cũng nên sử dụng một mẫu đơn giản, vì vậy chúng tôi sẽ sử dụng Cổng bảng. Chúng tôi thậm chí sẽ bỏ qua việc tạo một lớp 16 (như mẫu cổ điển sẽ yêu cầu) và chỉ cần tạo lớp 71. Chúng tôi sẽ triển khai các phương thức để trả về tất cả các bản ghi, trả về một người cụ thể và thêm/cập nhật/xóa một người 72 2Rõ 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 ra 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 3Triển khai API PHP RESTChúng tôi sẽ triển khai API REST ngay bây giờ với các điểm cuối sau 4Chúng tôi sẽ tạo một tệp 73 để đóng vai trò là bộ điều khiển phía trước và xử lý các yêu cầu, đồng thời tạo một tệp 74 để 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) 75 5 74 6Bạn có thể kiểm tra API bằng công cụ như Postman. Đầu tiên, vào thư mục dự án và khởi động máy chủ PHP 7Sau đó kết nối với 77 bằng Postman và gửi yêu cầu http. Ghi chú. khi thực hiện các yêu cầu PUT và POST, hãy đảm bảo đặt loại Nội dung thành 78, sau đó dán tải trọng ở định dạng JSON và đặt loại nội dung thành JSON (application/json)Bảo mật API PHP REST của bạn bằng OAuth 2. 0Chúng tôi sẽ sử dụng Okta làm máy chủ ủy quyền của mình và chúng tôi sẽ triển khai Luồng thông tin xác thực của khách hàng. Luồng được đề xuất để xác thực giữa các máy khi máy khách ở chế độ riêng tư và hoạt động như thế này. Ứng dụng khách giữ ID khách hàng và Bí mật; Trước khi 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 79 để đăng ký tài khoản mới. Nếu bạn đã có tài khoản, hãy chạy 00. Sau đó, chạy 01. Chọn tên ứng dụng mặc định hoặc thay đổi tên khi bạn thấy phù hợpOkta CLI làm gì?Okta CLI sẽ tạo OAuth 2. 0 Ứng dụng dịch vụ trong Okta Org của bạn. Bạn sẽ thấy đầu ra như sau khi hoàn thành 8Chạy 02 (hoặc 03 trên Windows) để xem nhà phát hành và thông tin đăng nhập cho ứng dụng của bạn 9Tê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 04GHI CHÚ. Bạn cũng có thể sử dụng Bảng điều khiển dành cho quản trị viên Okta để tạo ứng dụng của mình. Xem Tạo ứng dụng dịch vụ để biết thêm thông tin Đâ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. Đối với 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 xác thực này vào tệp 1 của mình (đảm bảo thay thế 06 và 07 bằng các giá trị từ trang này)Thêm vào 40 0Thêm các khóa và giá trị này vào 1 1Đăng nhập vào Bảng điều khiển dành cho quản trị viên Okta (mẹo. chạy 00, 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 REST. Đặt tên cho nó là 21 và chọn Đặt làm phạm vi mặc địnhThêm phạm vi vào 40 2và khóa có giá trị là 1 3Thêm xác thực vào PHP REST API của bạnChúng tôi sẽ sử dụng thư viện Okta JWT Verifier. Nó yêu cầu thư viện JWT (chúng tôi sẽ sử dụng 24) và thư viện tuân thủ PSR-7 (chúng tôi sẽ sử dụng 25). Chúng tôi sẽ cài đặt mọi thứ thông qua nhà soạn nhạc 4Bâ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 mình (nếu sử dụng khung, thay vào đó, chúng tôi sẽ thực hiện việc này trong phần mềm trung gian) 75 (bản full cho rõ) 5Xây dựng Ứng dụng khách mẫu (Tập lệnh dòng lệnh) để kiểm tra API PHP RESTTrong phần này, chúng tôi sẽ thêm một ứng dụng 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 'public/clients. php’ với quy trình 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 ứng dụng khách và bí mật) từ. env, thì nó sẽ lấy mã thông báo truy cập từ Okta và nó sẽ chạy các lệnh 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) 27 6Bạn có thể chạy ứng dụng từ dòng lệnh bằng cách vào thư mục 28 và chạy 7(Đừng quên khởi động máy chủ nếu bạn chưa có. ) 7Đó là nó Tìm hiểu thêm về PHP, API REST an toàn và OAuth 2. 0 Quy trình xác thực khách hàngBạn có thể tìm thấy tất cả mã từ ví dụ này trên GitHub, trong kho lưu trữ oktadeveloper/okta-php-core-rest-api-example Nếu bạn muốn tìm hiểu sâu hơn về các chủ đề được đề cập trong bài viết này, các tài nguyên sau đây là điểm khởi đầu tuyệt vời
Giống như những gì bạn đã học ngày hôm nay? Làm cách nào tôi có thể truy cập API REST trong PHP?Tạo khung dự án PHP cho API REST của bạn Định cấu hình cơ sở dữ liệu cho PHP REST API của bạn Thêm một lớp cổng cho bảng người Triển khai API PHP REST Bảo mật API REST PHP của bạn bằng OAuth 2. 0 Thêm xác thực vào PHP REST API của bạn Làm cách nào để gửi dữ liệu tới API REST trong PHP?Để gửi dữ liệu đến máy chủ API REST bằng PHP, bạn phải thực hiện yêu cầu HTTP POST và đưa dữ liệu POST vào phần thân của yêu cầu . Bạn cũng cần cung cấp Loại nội dung. tiêu đề yêu cầu application/json và Content-Length. Dưới đây là ví dụ về yêu cầu POST API REST tới điểm cuối ReqBin REST API.
Chúng tôi có thể gọi API REST từ trình duyệt không?API REST sử dụng một số phương thức HTTP để thực hiện các hành động khác nhau trên tài nguyên REST. Mọi lệnh gọi API REST sử dụng phương thức HTTP GET đều có thể được gửi bằng trình duyệt Web chẳng hạn như Microsoft Internet Explorer hoặc Mozilla Firefox.
Dịch vụ web RESTful PHP là gì?Dịch vụ web RESTful về cơ bản là Dịch vụ web dựa trên kiến trúc REST . Trong Kiến trúc REST, mọi thứ đều là tài nguyên. Các dịch vụ web RESTful có trọng lượng nhẹ, khả năng mở rộng và bảo trì cao và thường được sử dụng để tạo API cho các ứng dụng dựa trên web. |