颤抖项目中的swagger-codegen

时间:2020-03-14 04:01:11

标签: flutter swagger flutter-http

我是不熟悉flutter的人,我试图集成到库下面以在flutter项目中使用Swagger。 https://github.com/swagger-api/swagger-codegen/tree/master/samples/client/petstore/dart/swagger

我到目前为止所做的步骤:

1)

added the Path in Pubspec.yaml
     swagger:
        path: /path/swagger-codegen-master/samples/client/petstore/dart/swagger

2)main.dart文件:

import 'package:swagger/api.dart';

3)在swspec文件中添加了Pubspec.yaml,因此我的项目支持SDK 2.0.0

 environment:
      sdk: ">=2.0.0-dev.68.0 <3.0.0"

工作正常问题是: 我可以访问var api_instance = new PetApi(); 那是在其中实现的swagger api。 我如何使用我的swagger API的URL,该URL根据我的项目具有完全不同的API。 例如在网址http://petstore.swagger.io/v2上,但在http://student.swagger.io/v2上 并具有完整的不同请求,标头和响应参数? 我该如何根据自己的用途对其进行自定义。

1 个答案:

答案 0 :(得分:1)

这是我要链接swagger API文件的步骤,
1.使用https://editor.swagger.io为dart生成客户端文件
2.用IOClient()代替了api_client.dart文件对BrowserClient()的使用,并导入了所需的库。此BrowserClient在我的项目中导致生成错误,因为它包含Web依赖项
3.然后创建客户端类以访问如下所示的API,

class Client{
  ApiClient _apiClient;
  AuthApi _authApi;
  AuthApi get authApi => _authApi;

  Client(){
    _apiClient = ApiClient(
      basePath: "http://yourproject.apilink",
    );
    _authApi=AuthApi(_apiClient);//The generated api
  }
}


4.然后

class AuthBloc {
  final Client client;

  AuthBloc(this.client) {}

  Future<User> signIn({
    @required String deviceID,
    @required String deviceType,
    @required String phone,
    @required String password,
  }) async {
    AuthLoginResponse authLoginResponse;
    User user;

    authLoginResponse = await client.authApi
        .authPostLogin(deviceID, deviceType, phone, password);
    user = authLoginResponse.payload;
    return user;
  }}