Flutter REST API交互插件dart_proffix_rest的使用

发布于 1周前 作者 nodeper 来自 Flutter

Flutter REST API交互插件dart_proffix_rest的使用


本README描述了该包。如果您将此包发布到pub.dev,则此README的内容将出现在您的包的首页上。

有关如何编写良好的包README的指南,请参阅撰写包页面

有关开发包的一般信息,请参阅Dart指南中的创建包和Flutter指南中的开发包和插件


pub package Build Status codecov License

Dart Wrapper für PROFFIX REST-API

alt text

该包装器由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

1 回复

更多关于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交互插件(例如diohttp),代码示例将会有所不同。

回到顶部