2

デフォルトでは、Dart-RPCは、サーバーとクライアントの間でオブジェクト (クラス インスタンス) を転送するときに JSON シリアル化を使用します。

代わりにProtobuf ( Protocol Buffers )シリアル化を使用するにはどうすればよいですか? リクエストヘッダー
を使用してシリアル化方法(コンテンツタイプなど)を指定することはできますか?Accept

これが私が試したことです、

エンティティ.protoを表す次の定義ファイルを使用しました。Person

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;
}

次のコマンドを実行して、 protoc-gen-dart pluginperson.pb.dartを使用して生成されました。

protoc person.proto --dart_out=. --plugin ./protoc-gen-dart

ボイラープレートの dart-rpc コード:

import 'dart:io';
import 'package:rpc/rpc.dart';
import 'person.pb.dart';

const String _API_PREFIX = '/api';
final ApiServer _apiServer =
new ApiServer(apiPrefix: _API_PREFIX, prettyPrint: true);

main() async {
  _apiServer.addApi(new Cloud());
  _apiServer.enableDiscoveryApi();

  HttpServer server = await HttpServer.bind(InternetAddress.ANY_IP_V4, 8080);
  server.listen(_apiServer.httpRequestHandler);
}

@ApiClass(version: 'v1')
class Cloud {
  @ApiMethod(method: 'GET', path: 'resource/{name}')
  Person getResource(String name) {

    Person p = new Person()
      ..id = 1
      ..name = name
      ..email = 'a@a.a';

    return p; // ??? p.writeToBuffer(); ???
  }
}

アップデート

機能リクエストを開きました: https://github.com/dart-lang/rpc/issues/62

4

1 に答える 1

2

rpcJSON のみをサポートします。GitHub リポジトリで機能リクエストを作成できます。

于 2015-08-24T06:29:37.363 に答える