swift 配置了多个REST API,无法推断要调用哪个API

pkmbmrz7  于 5个月前  发布在  Swift
关注(0)|答案(1)|浏览(69)

我在我的iOS应用程序中使用Amplify。我们有一个后端团队为我们提供一些外部API。有这个API被调用并且工作正常。我们必须有两个端点,所以他们已经创建了端点并将其推送到Amplify。拉取后,API没有按预期工作。它返回“配置了多个rest api。无法推断调用哪个API”这个错误。请给我解释一下。
这就是xcode中的amplifyconfiguration.json文件的样子

"api": {
    "plugins": {
        "awsAPIPlugin": {
            "companies": {
                "endpointType": "REST",
                "endpoint": "https://j7l0jwnq27.execute-api.us-east-1.amazonaws.com/dev",
                "region": "us-east-1",
                "authorizationType": "AWS_IAM"
            },
            "projection": {
                "endpointType": "REST",
                "endpoint": "https://z57ijgfs16.execute-api.us-east-1.amazonaws.com/dev",
                "region": "us-east-1",
                "authorizationType": "AWS_IAM"
            },
            "tableCalculation": {
                "endpointType": "REST",
                "endpoint": "https://5nt0tfg2a6.execute-api.us-east-1.amazonaws.com/dev",
                "region": "us-east-1",
                "authorizationType": "AWS_IAM"
            }
        }
    }
}

字符串
这里/getCompanies在其他两个端点到来之前工作正常。现在当调用/getCompanies端点时,我得到“配置了多个rest API。无法推断要调用哪个API”这个错误。
这就是我调用API的方式

let request = RESTRequest(path: "/getCompanies")
Amplify.API.get(request: request)


Thanks in advance

f5emj3cl

f5emj3cl1#

我们遇到了类似的问题,并已成功解决。
您看到的错误告诉您,Amplify无法决定使用哪个端点URL,因为配置指定了多个端点。
为了使用多个端点,你需要明确地告诉你想要使用哪一个。在RESTRequest初始化器中有一个专用的参数,叫做apiName,例如:

let request = RESTRequest(apiName: "<api name>", path: "<path>, headers: <headers>)

字符串
在创建RESTRequest对象时,您需要在此初始化器中传递amplifyconfiguration.json文件中配置的API名称,然后Amplify SDK将能够发出这些请求。
在你的情况下,它可能是:
对“公司”端点的请求:

let request = RESTRequest(apiName: "companies", path: "/getCompanies", headers: ["header1": "value1"])
let result = try await Amplify.API.get(request: request)
// do something with the result


对其他端点的请求可以通过传递API名称以相同的方式完成,例如:

let projectionRequest = RESTRequest(apiName: "projection", path: "/getProjection", headers: ["header1": "value1"])

let tableCalculationRequest = RESTRequest(apiName: "tableCalculation", path: "/getTableCalculation", headers: ["header1": "value1"])

相关问题