Công cụ thành viên

Công cụ trang web


programming4:api

Đây là một phiên bản cũ của tài liệu!


Hướng dẫn toàn tập về API của NukeViet 4

Hệ thống API được đưa vào kể từ phiên bản 4.5.00

Dành cho nhà phát triển sử dụng API

Nguyên tắc chung

Thực hiện lệnh POST vào URL <scheme>://<domain>/api.php (ví dụ https://nukeviet.vn/api.php) với đầu vào được mô tả bên dưới, dữ liệu trả về dạng JSON, sử dụng hàm json_decode để chuyển thành array và thao tác.

Các tham số bắt buộc

[
    'apikey' => '...', // Khóa được cung cấp
    'apisecret' => '...', // Mã bí mật được cung cấp
    'action' => 'GetLesson', // Tên API được list bên dưới
    'module' => 'elearning', // Module xử lý, ở đây là elearning, để trống thì là API của hệ thống
]

Các tham số tùy chọn tùy theo từng API cụ thể quy định. Dữ liệu trả về cố định (toàn bộ các API đều sẽ có) như sau

[
    'status' => 'success', // Nếu thành công thì là success, thất bại (có lỗi) thì là error
    'code' => '0000', // Mã lỗi nếu có
    'message' => '' // Thông tin lỗi nếu có
]

Ví dụ

Code sử dụng từ một website bất kỳ

Sử dụng thư viện CURL để gửi truy vấn

$api_remote_url = 'https://nukeviet.vn/api.php';
$agent = 'NukeViet Remote API Lib';
 
$ch = curl_init();
 
curl_setopt($ch, CURLOPT_URL, $api_remote_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
 
$safe_mode = (ini_get('safe_mode') == '1' || strtolower(ini_get('safe_mode')) == 'on') ? 1 : 0;
$open_basedir = ini_get('open_basedir') ? true : false;
if (!$safe_mode and !$open_basedir) {
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
}
 
$request = [
    // Tham số bắt buộc
    'apikey' => '...',
    'apisecret' => '...',
    'action' => 'CreatArticle',
    'module' => 'news'
];
 
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, $request);
 
$res = curl_exec($ch);
 
curl_close($ch);
 
$responsive = json_decode($res, true);
 
print_r($responsive);

Code sử dụng từ một website NukeViet

Sử dụng thư viện NV HTTP để truy vấn

// Các tham số tùy chọn của mỗi API để vào biến $parameters
$parameters = [];
$request = [
    // Tham số bắt buộc
    'apikey' => '...',
    'apisecret' => '...',
    'action' => 'CreatArticle',
    'module' => 'news',
];
$request = array_merge($request, $parameters);
 
$NV_Http = new NukeViet\Http\Http($global_config, NV_TEMP_DIR);
 
$args = [
    'headers' => [
        'Referer' => NV_MY_DOMAIN
    ],
    'body' => $request,
    'timeout' => 20
];
$responsive = $NV_Http->post(MARKETING_API_URL, $args);
 
$res = [];
$error = '';
 
if (is_array($responsive) and empty(NukeViet\Http\Http::$error)) {
    $res = !empty($responsive['body']) ? json_decode($responsive['body'], true) : [];
} elseif (!empty(NukeViet\Http\Http::$error) {
    $error = 'Lỗi truy vấn: ' . NukeViet\Http\Http::$error;
} else {
    $error = 'Lỗi khác';
}
 
print_r($error);
print_r($res);

Dành cho nhà phát triển muốn cung cấp remote API

Để remote api hoạt động cần đảm bảo các yếu tố sau:

  1. Tại chức năng Thiết lập Cross-Site ở phần Cấu hình ⇒ Thiết lập an ninh cần tắt bảo vệ ngoài site hoặc thêm tên miền hoặc IP cho phép gọi API
  2. Tại chức năng Cấu hình ⇒ Cấu hình chung cần Bật Remote API
  3. Quyền truy cập API tại phần Quản trị ⇒ Quyền truy cập API đã chọn đủ API Role có chứa API cần gọi.

API của module

Xem hướng dẫn Module hỗ trợ API

API của hệ thống

Tương tự như API của module ngoại trừ các điểm khác sau:

  • File API nằm trong thư mục includes/api
  • namespace là namespace NukeViet\Api;
programming4/api.1616374761.txt.gz · Sửa đổi lần cuối: 2021/03/22 07:59 bởi hoaquynhtim99