Flutter REST API交互插件dart_proffix_rest的使用
Flutter REST API交互插件dart_proffix_rest的使用
本README描述了该包。如果您将此包发布到pub.dev,则此README的内容将出现在您的包的首页上。
有关如何编写良好的包README的指南,请参阅撰写包页面。
有关开发包的一般信息,请参阅Dart指南中的创建包和Flutter指南中的开发包和插件。
Dart Wrapper für PROFFIX REST-API
该包装器由Pedrett IT+Web AG维护和开发,这是一家独立且创新的Proffix Px5合作伙伴。
概述
安装
dart pub add dart_proffix_rest
配置
配置信息通过客户端传递:
配置 | 示例 | 类型 | 备注 |
---|---|---|---|
restURL | https://myserver.ch:12299 | string | REST-API的URL(不包含pxapi/v4/ ) |
database | DEMO | string | 数据库名称 |
username | USR | string | 用户名 |
password | b62cce2fe18f7a156a9c… | string | 用户密码的SHA256哈希值 |
modules | [“ADR”, “FIB”] | List<String>? | 所需模块(逗号分隔) |
options | ProffixRestOptions(volumeLicence: true) | ProffixRestOptions | 选项(详情见选项部分) |
示例:
import 'package:dart_proffix_rest/dart_proffix_rest.dart';
var pxClient = ProffixClient(
database: 'DEMODBPX5',
restURL: 'https://myserver.ch:12299',
username: 'USR',
password: 'b62cce2fe18f7a156a9c719c57bebf0478a3d50f0d7bd18d9e8a40be2e663017',
modules: ["VOL"],
options: null,
);
var request = await pxClient.get(endpoint: "ADR/Adresse", params: {"Limit": "1"});
选项
选项是可选的,并且通常不需要:
选项 | 示例 | 备注 |
---|---|---|
key | 112a5a90fe28b…242b10141254b4de59028 | API密钥(也可以直接传递) |
version | v3 | API版本;默认为v3 |
loginEndpoint | /pxapi/ | API前缀;默认为/pxapi/ |
LoginEndpoint | PRO/Login | 登录端点;默认为PRO/Login |
userAgent | DartWrapper | User Agent;默认为DartWrapper |
timeout | 15 | 超时时间(秒) |
batchsize | 200 | 批处理请求的批次大小;默认为200 |
log | true | 启用调试日志;默认为false |
volumeLicence | false | 使用PROFFIX许可证管理 |
方法
参数 | 类型 | 备注 |
---|---|---|
endpoint | string | PROFFIX REST-API的端点;例如ADR/Adresse, STU/Rapporte… |
data | string | 数据(自动转换为JSON) |
parameters | Map<String, dynamic>? | 参数(根据PROFFIX REST API 文档) |
可用的方法包括:
GET / 查询
var request = await pxClient.get(endpoint: "ADR/Adresse/1", params: {"Fields": "AdressNr"});
PUT / 更新
var request = await pxClient.put(endpoint: "ADR/Adresse/1", {
"Name": "Muster GmbH",
"Ort": "Zürich",
"Zürich": "8000",
});
PATCH / 更新
var request = await pxClient.patch(endpoint: "ADR/Adresse/1", {
"Name": "Muster GmbH",
"Ort": "Zürich",
"Zürich": "8000",
});
POST / 创建
var request = await pxClient.post(endpoint: "ADR/Adresse/1", {
"Name": "Muster GmbH",
"Ort": "Zürich",
"Zürich": "8000",
});
DELETE / 删除
var request = await pxClient.delete(endpoint: "ADR/Adresse/1");
特殊端点
Check
检查登录凭据并抛出异常。
var check = await pxClient.check();
// 如果statusCode = 200 -> 成功
if(check.statusCode == 200){
print("OK");
// 否则显示异常
} else {
print(check);
}
上传/下载文件
将文件上传到PRO/文件并返回文件编号作为字符串。
// 上传文件
final File file = File("_assets/dart-proffix.png");
var bytes = file.readAsBytesSync();
var dataUpload = Uint8List.fromList(bytes);
var dateiNr = await pxClient.uploadFile("testDate.png", dataUpload);
// 下载文件(再次)
var fileAgain = await pxClient.downloadFile(dateiNr: dateiNr.toString());
登出
从PROFFIX REST-API注销并释放会话/许可。此外,Dart客户端将被关闭。
注意: 将自动使用最后使用的PxSessionId进行登出。
var lgout = await pxClient.logout();
注意: 在发生错误时,包装器也会自动进行登出,以防止许可证被锁定。
getPxSessionId()
返回当前的PxSessionId。
var pxSessionId = await pxClient.getPxSessionId();
setPxSessionId()
手动设置PxSessionId。
注意: 仅在服务登录(如通过扩展或Proffix WebView)时需要使用此方法。
pxClient.setPxSessionId("99753429-9716-cf41-066a-8c98edc5e928");
GET List
直接获取PROFFIX REST API的列表(无需绕行)。
var list = await pxClient.getList(listeNr: 1232, data: {});
更多关于Flutter REST API交互插件dart_proffix_rest的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter REST API交互插件dart_proffix_rest的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter应用中使用dart_proffix_rest
插件与REST API进行交互的代码示例。假设dart_proffix_rest
插件提供了基本的HTTP请求功能,并且我们希望通过这个插件获取一些数据。
首先,确保你已经在pubspec.yaml
文件中添加了dart_proffix_rest
依赖项:
dependencies:
flutter:
sdk: flutter
dart_proffix_rest: ^latest_version # 请替换为实际的最新版本号
然后,运行flutter pub get
来获取依赖项。
接下来,我们可以编写一些代码来演示如何使用这个插件。假设我们有一个API端点https://api.example.com/data
,我们想从这个端点获取数据。
1. 导入插件
在你的Dart文件中导入dart_proffix_rest
:
import 'package:dart_proffix_rest/dart_proffix_rest.dart';
2. 配置和使用插件
假设dart_proffix_rest
提供了一个RestClient
类来处理HTTP请求,以下是一个简单的示例代码:
import 'package:flutter/material.dart';
import 'package:dart_proffix_rest/dart_proffix_rest.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _responseData = '';
@override
void initState() {
super.initState();
fetchData();
}
void fetchData() async {
try {
// 假设RestClient是dart_proffix_rest提供的类
RestClient client = RestClient();
// 发送GET请求
var response = await client.get(Uri.parse('https://api.example.com/data'));
// 假设响应数据是JSON格式的,我们将其解码为Map
Map<String, dynamic> data = jsonDecode(response.body);
// 更新UI
setState(() {
_responseData = data.toString();
});
} catch (e) {
print('Error fetching data: $e');
// 可以在这里处理错误,例如显示一个错误消息
setState(() {
_responseData = 'Error fetching data';
});
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter REST API Interaction'),
),
body: Center(
child: Text(_responseData),
),
),
);
}
}
3. 注意事项
- 错误处理:在实际应用中,你应该添加更详细的错误处理逻辑,比如重试机制、用户友好的错误消息等。
- 环境配置:确保你的API端点URL是正确的,并且你的Flutter应用有权限访问网络(在Android上需要在
AndroidManifest.xml
中添加INTERNET权限)。 - 依赖项版本:请确保你使用的是
dart_proffix_rest
的最新版本,并查看其官方文档以获取最新的API和使用指南。
由于dart_proffix_rest
可能是一个假想的插件名称,如果实际插件的API有所不同,请参考其官方文档进行调整。如果你使用的是另一个具体的REST API交互插件(例如dio
或http
),代码示例将会有所不同。