Công cụ thành viên

Công cụ trang web


programming4:api

Khác biệt

Đây là những khác biệt giữa hai phiên bản của trang.

Liên kết đến bản xem so sánh này

Phiên bản trước của cả hai bênPhiên bản trước
Phiên bản sau
Phiên bản trước
Phiên bản sauPhiên bản sau của cả hai bên
programming4:api [2021/09/01 13:53] – [Bước 4 thêm giá trị api vào file ngôn ngữ của module] webvangprogramming4:api [2022/07/20 09:39] – [Hướng dẫn toàn tập về API của NukeViet 4] hoaquynhtim99
Dòng 2: Dòng 2:
  
 > Hệ thống API được đưa vào kể từ phiên bản 4.5.00 > Hệ thống API được đưa vào kể từ phiên bản 4.5.00
 +
 +Xem mô tả luồng truy vấn thông thường và API như ảnh bên dưới
 +
 +{{ :programming4:luong-api.jpg |}}
  
 ===== Dành cho nhà phát triển sử dụng API ===== ===== Dành cho nhà phát triển sử dụng API =====
Dòng 288: Dòng 292:
  
 <code php> <code php>
-Api::ADMIN_LEV_GOD; // 3Quản lý module+Api::ADMIN_LEV_GOD; // 1Admin tối cao
 Api::ADMIN_LEV_SP; // 2: Điều hành chung Api::ADMIN_LEV_SP; // 2: Điều hành chung
-Api::ADMIN_LEV_MOD; // 1Admin tối cao+Api::ADMIN_LEV_MOD; // 3Quản lý module
 </code> </code>
  
Dòng 368: Dòng 372:
 $this->result->set($key, $value); $this->result->set($key, $value);
 </code> </code>
-** Bước 4: thêm giá  trị api vào file ngôn ngữ của module  
-  * $lang_module['api_modulename'] 
-  * $lang_module['api_modulename_class'] 
  
-** Bước 3 thêm giá  trị api vào file ngôn ngữ của module +** Bước 3 thêm giá  trị api vào file ngôn ngữ của module **
   * $lang_module['api_modulename']   * $lang_module['api_modulename']
   * $lang_module['api_modulename_class']   * $lang_module['api_modulename_class']
Dòng 384: Dòng 385:
  
  
 +==== Cách gọi API nội bộ ====
  
 +Ta có thể dùng hàm ''nv_local_api'', cụ thể như sau
 +<code php>
 +$return = nv_local_api($cmd, $params, $adminidentity = '', $module = '');
 +</code>
 +
 +Trong đó:
 +  * $return: là kết quả API trả về
 +  * $cmd: là tương ứng với action khi remote
 +  * $params: là mảng data nó sẽ được chuyển thành biến $_POST
 +  * $adminidentity: là userid hoặc username của admin
 +  * $module: tương ứng với module khi remote
 +
 +Ví dụ: Với cách gọi qua CURL thông thường, ta cần phải làm các bước sau:
 +<code php>
 +$agent = 'NukeViet Remote API Lib';
 +$safe_mode = (ini_get('safe_mode') == '1' || strtolower(ini_get('safe_mode')) == 'on') ? 1 : 0;
 +$open_basedir = ini_get('open_basedir') ? true : false;
 +
 +$ch = curl_init();
 +curl_setopt($ch, CURLOPT_URL, '...'//URL của API);
 +curl_setopt($ch, CURLOPT_HEADER, 0);
 +
 +if (!$safe_mode and !$open_basedir) {
 +     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 +     curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
 +}
 +
 +$params= [
 +    'apikey' => '...', // Khóa được cung cấp
 +    'timestamp' => '...', // Thời gian resquest sai lệch với giờ máy chủ không quá 5 giây
 +    'hashsecret' => '...', // Mã bí mật mỗi lần resquest = password_hash($apisecret . '_' . $timestamp, PASSWORD_DEFAULT);
 +    'action' => 'GetUsername', // Tên API hoặc action khi remote
 +    'module' => 'user', // Module xử lý, ở đây là user, để trống thì là API của hệ thống
 +    'language' => 'vi' // Bắt buộc nếu API của module trên site đa ngôn ngữ
 +    
 +    //Các dữ liệu cần thiết, ví dụ ở đây ta sẽ truyền userid
 +    'userid' => $userid
 +];
 +
 +$str = http_build_query($request);
 +curl_setopt($ch, CURLOPT_TIMEOUT, 20);
 +curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 +curl_setopt($ch, CURLOPT_USERAGENT, $agent);
 +curl_setopt($ch, CURLOPT_POST, sizeof($request));
 +curl_setopt($ch, CURLOPT_POSTFIELDS, $str);
 +$return = curl_exec($ch);  //Dữ liệu API sẽ trả về
 +curl_close($ch);
 +</code>
 +
 +Với hàm ''nv_local_api'', ta sử dụng:
 +<code php>
 +$params= [
 +     'userid' => $userid
 +];
 +$return = nv_local_api('GetUsername', $params, 'admin', 'user');
 +/*
 + Với:
 +  * $return: Dữ liệu API sẽ trả về
 +  * 'GetUsername': Tên API hoặc action khi remote
 +  * $params: Mảng dữ liệu truyền vào API
 +  * 'admin': username của tài khoản admin
 +  * 'user': Module xử lý
 +*/
 +</code>
 +Có thể xem thêm về hàm ''nv_local_api'' tại: ''.../includes/function.php''
programming4/api.txt · Sửa đổi lần cuối: 2023/12/19 08:14 bởi hoaquynhtim99