[API] Cách tạo Custom Api Endpoint Post Request trên WordPress (ok)
https://wolfactive.dev/cach-tao-custom-api-endpoint-post-request-tren-wordpress/?fbclid=IwAR2LSEt2uZOjhmBox3CApZjSdvZVy-gVsJr4uT0Ry7DAaG2Nd6bEAZUGcgU
Cách tạo Custom Api Endpoint Post Request trên WordPress
Trong bài Cách tạo Custom API Entry Point WordPress mình đã hướng dẫn các bạn tạo mình link api có thể truyền động parameter cũng như là tạo custom paramter trên link api đó. Thì với bài này mình sẽ hướng dẫn về cách tạo Custom Api Endpoint Post Request. Và cách sử dụng fetch của JavaScript để giao tiếp API với POST request. Đồng thời so sánh 2 cái giao tiếp API sử dụng POST request giữa Ajax jQuery với Fetch trong JavaScript. Và với bài hôm nay một là hướng dẫn các bạn các tạo API với POST request, hai là hướng dẫn các bạn cách lưu email data vào database và hiển thị trên admin panel khi submit.
Cách tạo Custom Api Endpoint Post Request
Khai báo API với WordPress
Cũng như các bài tạo custom API trước thì chúng ta sẽ khai báo đường dẫn api với WordPres bằng đoạn code sau:
Nếu so sánh với bài Cách tạo Custom API Entry Point WordPress thì phần khai báo sẽ ngắn hơn. Do chúng ta không tạo custom paramter nên các viết sẽ ngắn hơn. Đoạn code trên mình đặt method là POST và khi có giao tiếp API với link trên sẽ thực thi lệnh blogSubmitDataToDb. Lúc này link API của bạn sẽ là http://example.com/wp-json/blog-api/v1/save-data
Tạo callback function thực thi
Tiếp tục chúng ta tiến hành tạo callback function để lấy email data khi giao tiếp api:
Đoạn code này hơi dài mình sẽ giải thích từ từ, tuy nhiên chưa xong đâu nhé 😀 . Hàm function đầu tiên cũng không khác mấy so với bài trước chỉ là không có paramter truyền vào do ở đây chúng ta lấy dữ liệu theo POST request nên sẽ không có dữ liệu từ parameter để lấy. Tiếp tục chúng ta đến hàm function prefix_blogSubmitDB như các bạn thấy. Nó sẽ rất khác so với cách lấy dữ liệu từ POST request thông thường do mình dùng fetch để giao tiếp API. Nên $_POST[’email’] sẽ không lấy được dữ liệu khi fetch dữ liệu lên. Nên mình sẽ lấy từ $_SERVER[“CONTENT_TYPE”] do minh lúc fetch mình cầu hình :D. Lúc này mình sẽ lấy dữ liệu thông qua $decoded[’email’] với $decoded được lấy từ content trong $_SERVER[“CONTENT_TYPE”]. Tuy nhiên nếu các bạn giao tiếp bằng Ajax jQuery thì các bạn cần cần phần check này:
Thay vào đó các bạn chỉ cần check và lấy $_POST[’email’] thay thế vào là được. Sau khi lấy dữ liệu thì mình tạo một array result để trả về khi giao tiếp API hoàn tất. Và mình cho $checkEmailsubmit hứng giá trị của hàm check checkEmailSubmit() để check xem email đó đã có trong database hay chưa. Nếu có trong database rồi thì hàm đó sẽ trả về id của email đó.
Tiếp tục mình đặt điều kiện để kiểm tra nếu email đó đã có tồn tại trong database thì message trả về string “Email này đã tồn tại” để thông báo rằng email này đã tồn tại trong hệ thống. Ngược lại khi chưa có thì mình sẽ cho biến $subscriber_id lưu giá trị trả về của hàm wp_insert_post với giá trị trả về là id khởi tạo data của email. Với hàm này email sẽ được lưu bên phần quản lý của email. Khúc này các bạn nên tạo custom post type data_email, và custom field trong post type data_email là email_data. Còn tạo như thế nào thì các bạn tham khảo 2 link sau nhé:
Sau khi khởi tạo và lưu email này tuy nhiên chỉ là lưu title thôi. Nên mình dùng hàm sau để lưu email vào custom field update_field( ’email_data’, $decoded[’email’], $subscriber_id ); .Thế là xong phần lưu dữ liệu vào database. Sau cùng là message trả về string thông bao đăng ký thành công.
Các hàm bổ trợ cho callback function
Sau đây mình tổng hợp lại các hàm bổ trợ:
Hàm kiểm email có tồn tại hay không?
Hàm chuyển array thành chuổi json trả về khi giao tiếp api:
Vậy là xong phần tạo custom API và lưu dữ liệu rồi tiếp theo chúng ta cùng đi đến phần giao tiếp api, hiện thị kết quả cho người dùng.
Gọi API ngoài giao diện và hiển thị kết quả
Như bài lần trước mình có để cập tới Giao tiếp API giữa JQuery và Vanilla JavaScript có gì khác nhau? thì với bài này mình sẽ thực hiện giao tiếp với api bằng fetch trong javascript. Trước tiên các bạn khởi tạo lệnh như sau, và tuy nhiên đợt này sẽ khác so với đợt trước.
Vậy là xong rồi á còn lại là các bạn muốn hiện như thế nào ở ngoài giao diện thôi. Đoạn code trên gồm phần check validate của phần input email và phần gửi dữ liệu. Thông báo tức là phần message của api trả về sẽ hiện trên toast. Và hàm toast mình tự viết chia sẽ ở đoạn sau:
Và sau đây là phần css và html cho toast:
Đoạn code html:
Đoạn code css:
Tổng kết
Và đây là kết quả 😀 . Các bạn có thể test phần submit đăng ký ở dưới footer để trải nghiệm 😀 😀
Tụi mình đã chia sẻ các bạn về cách tạo một Custom Api Endpoint Post Request rồi. Có thắc mắc hay đóng góp gì các bạn hãy inbox vào fanpage tụi mình nhé!!! Tụi mình sẽ phản hồi kịp thời. Cảm ơn các bạn đã theo dõi
Last updated