API 문서
Smrt English Client API
학생과 클래스 기록을 기관의 시스템으로 제공하는 읽기 전용 API입니다. 각 API 키(API key)는 해당 기관의 데이터에만 접근할 수 있습니다.
작동 방식
요청 처리 방식
기관의 시스템이 자체 API 키로 학생이나 클래스 정보를 요청하면, API가 해당 기록을 읽기 전용으로 반환합니다.
dns기관 시스템기관의 학생 정보 시스템이나 리포트 도구입니다.
arrow_forwardkey기관의 API 키모든 요청과 함께 전송되며, 해당 학교에 연결되어 있습니다.
arrow_forwardapiSmrt English API학생과 클래스 정보를 위한 읽기 전용 엔드포인트입니다.
arrow_forwardtable_view기관의 기록성적, 출결, 클래스 명단을 JSON으로 제공합니다.
Smrt English API
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}`);
}
});