首页 > 解决方案 > 如何将完成块用于 swagger 为 etcd api 生成的 api 存根

问题描述

我尝试在使用 swagger-gen 的 swift 命令行项目中使用 etcd v3 API 和这个 api:https ://etcd.io/docs/v3.5/dev-guide/apispec/swagger/rpc.swagger.json 但是运行一个问题:返回的字符串是空的。

到目前为止我尝试了什么:EtcdService.swift:

import Foundation
import SwaggerClient

struct EtcdService {

    static var prefix : String = "foo"
    static func getValue(key: String) -> String {
            var str = "";
            var req = EtcdserverpbRangeRequest()
            req.key = Data((prefix+key).utf8)
            SwaggerClient.KVAPI.kVRange(body: req) { (response: EtcdserverpbRangeResponse?, _: Error?) in
                
                let data: [MvccpbKeyValue] = (response?.kvs)!
                str = String(decoding: (data.first?.value)!, as: UTF8.self)
                //it does show me the content of the response if I uncomment this
                //print(str)
    
            }
            return str;
        }
}

main.swift:

import Foundation
import SwaggerClient

SwaggerClientAPI.basePath = "http://localhost:2379"
let str = EtcdService.getValue(key: "3")
print(str)

RunLoop.main.run(until: Date(timeIntervalSinceNow: 5))

有没有更清洁(更简单)的方法来做到这一点?

标签: swiftswaggeretcd

解决方案


推荐阅读