Files
kitchen/scripts/test_recipe_code.dart
2026-04-13 07:51:51 +08:00

153 lines
4.6 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* 文件: test_recipe_code.dart
* 作用: 测试菜谱code字段验证二维码海报功能所需数据
* 创建: 2026-04-13
*/
import 'dart:convert';
import 'dart:io';
const String baseUrl = 'http://eat.wktyl.com/api';
Future<void> main() async {
final client = HttpClient();
print('=== 菜谱 Code 字段测试 ===\n');
// 测试1: detail接口是否返回code字段
print('📋 测试1: detail接口 code字段');
try {
final url = Uri.parse('$baseUrl/api.php?act=detail&id=32892');
final request = await client.getUrl(url);
final response = await request.close();
final body = await response.transform(utf8.decoder).join();
final data = json.decode(body);
if (data['code'] == 200) {
final recipe = data['data'];
print(' ✅ 菜谱标题: ${recipe['title']}');
print(' ✅ Code字段: ${recipe['code']}');
print(' ✅ Pic_id: ${recipe['pic_id']}');
print(' ✅ Statistics: ${recipe['statistics']}');
} else {
print(' ❌ 接口返回错误: ${data['message']}');
}
} catch (e) {
print(' ❌ 请求失败: $e');
}
print('');
// 测试2: full接口是否返回code字段
print('📋 测试2: full接口 code字段');
try {
final url = Uri.parse('$baseUrl/api.php?act=full&id=32892');
final request = await client.getUrl(url);
final response = await request.close();
final body = await response.transform(utf8.decoder).join();
final data = json.decode(body);
if (data['code'] == 200) {
final recipe = data['data'];
print(' ✅ 菜谱标题: ${recipe['title']}');
print(' ✅ Code字段: ${recipe['code']}');
print(' ✅ Category: ${recipe['category']}');
print(' ✅ Allergens: ${recipe['allergens']}');
}
} catch (e) {
print(' ❌ 请求失败: $e');
}
print('');
// 测试3: what_to_eat detail接口通过code查询
print('📋 测试3: what_to_eat detail接口 code查询');
try {
final url =
Uri.parse('$baseUrl/api_what_to_eat.php?act=detail&code=CP032892');
final request = await client.getUrl(url);
final response = await request.close();
final body = await response.transform(utf8.decoder).join();
final data = json.decode(body);
if (data['code'] == 200) {
final recipe = data['data'];
print(' ✅ 通过code查询成功: ${recipe['title']}');
} else {
print(' ❌ code查询失败: ${data['message']}');
}
} catch (e) {
print(' ❌ 请求失败: $e');
}
print('');
// 测试4: mini接口是否返回code字段
print('📋 测试4: mini接口 code字段');
try {
final url = Uri.parse('$baseUrl/api.php?act=mini&id=32892');
final request = await client.getUrl(url);
final response = await request.close();
final body = await response.transform(utf8.decoder).join();
final data = json.decode(body);
if (data['code'] == 200) {
final recipe = data['data'];
print(' ✅ 菜谱标题: ${recipe['title']}');
print(' ✅ Code字段: ${recipe['code']}');
print(' ✅ 返回字段: ${recipe.keys.toList()}');
}
} catch (e) {
print(' ❌ 请求失败: $e');
}
print('');
// 测试5: feed recommend接口
print('📋 测试5: feed recommend接口');
try {
final url = Uri.parse('$baseUrl/api_feed.php?act=recommend&page=1&limit=3');
final request = await client.getUrl(url);
final response = await request.close();
final body = await response.transform(utf8.decoder).join();
final data = json.decode(body);
if (data['code'] == 200) {
final items = data['data'] as List;
print(' ✅ 推荐数量: ${items.length}');
for (final item in items) {
print(
' - ${item['title']} (code: ${item['code']}, views: ${item['statistics']?['view_count']})');
}
}
} catch (e) {
print(' ❌ 请求失败: $e');
}
print('');
// 测试6: filter_apply接口每日菜单规划用
print('📋 测试6: filter_apply接口 三餐推荐');
for (final meal in ['早餐', '中餐', '晚餐']) {
try {
final url = Uri.parse(
'$baseUrl/api_what_to_eat.php?act=filter_apply&count=2&meal_time=$meal');
final request = await client.getUrl(url);
final response = await request.close();
final body = await response.transform(utf8.decoder).join();
final data = json.decode(body);
if (data['code'] == 200) {
final items = data['data'] as List;
final titles = items.map((e) => e['title']).join(', ');
print('$meal: $titles');
}
} catch (e) {
print('$meal 请求失败: $e');
}
}
print('\n=== 测试完成 ===');
client.close();
}