跳至正文

API文档

Smrt English客户API

这是一个只读API,将学生和班级记录返回至您所在机构的系统。每个API密钥(API key)只能访问其所属机构的数据。

打开测试中心

运作方式

请求的处理流程

您的系统使用自己的API密钥请求某位学生或某个班级的数据,API以只读方式返回相应记录。

您的系统您的学生信息管理系统或报表工具。
您的API密钥随每个请求一同发送,并与您的学校绑定。
Smrt English API面向学生和班级数据的只读接口。
您的记录以JSON格式返回的成绩、考勤和班级学生名单。
keyboard_arrow_up

Smrt English API

thumb_up Best Practices

Integration Guidelines

1. Cache Responses

  • Student data doesn't change frequently
  • Consider caching responses for 5-15 minutes
  • Implement cache invalidation when needed

2. Batch Processing

  • If fetching data for multiple students, space out requests
  • Process data asynchronously when possible
  • Consider off-peak hours for large data pulls

3. Error Recovery

  • Implement retry logic with exponential backoff
  • Handle network timeouts gracefully
  • Log errors for debugging

4. Data Handling

  • Validate data structure before processing
  • Handle null values appropriately
  • Check for empty arrays before iterating

Code Examples

PHP Example

<?php
function getStudentData($studentId, $apiKey) {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, "https://smrtenglish.com/smrtapi/v1/student/$studentId");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "X-API-Key: $apiKey"
    ]);

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    if ($httpCode === 200) {
        return json_decode($response, true);
    } else {
        // Handle error
        return null;
    }
}

// Load API key from environment variable for security
$apiKey = getenv('SMRT_API_KEY');
$studentId = 12345;
$data = getStudentData($studentId, $apiKey);

if ($data && $data['success']) {
    $student = $data['data']['student'];
    echo "Student: " . $student['name'] . "\n";
    echo "Email: " . $student['email'] . "\n";
}
?>

Python Example

import requests
import os

def get_student_data(student_id, api_key):
    url = f"https://smrtenglish.com/smrtapi/v1/student/{student_id}"
    headers = {
        "X-API-Key": api_key
    }

    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        return response.json()
    else:
        # Handle error
        return None

# Load API key from environment variable for security
api_key = os.environ.get('SMRT_API_KEY')
student_id = 12345
data = get_student_data(student_id, api_key)

if data and data.get('success'):
    student = data['data']['student']
    print(f"Student: {student['name']}")
    print(f"Email: {student['email']}")

JavaScript/Node.js Example

const axios = require('axios');

async function getStudentData(studentId, apiKey) {
    try {
        const response = await axios.get(
            `https://smrtenglish.com/smrtapi/v1/student/${studentId}`,
            {
                headers: {
                    'X-API-Key': apiKey
                }
            }
        );

        if (response.data.success) {
            return response.data.data;
        }
    } catch (error) {
        console.error('API Error:', error.response?.data || error.message);
        return null;
    }
}

// Load API key from environment variable for security
const apiKey = process.env.SMRT_API_KEY;
const studentId = 12345;

getStudentData(studentId, apiKey).then(data => {
    if (data) {
        const student = data.student;
        console.log(`Student: ${student.name}`);
        console.log(`Email: ${student.email}`);
    }
});