配置了多个rest api。无法推断要调用哪个 API

问题描述 投票:0回答:1

我在我的 iOS 应用程序中使用 Amplify。我们有一个后端团队为我们提供一些外部 API。有一个 API 被调用并且工作正常。我们还必须有两个端点,因此他们创建了该端点并推动其放大。拉取后,API 未按预期工作。它返回“配置了多个其余 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 端点时,我收到“配置了多个其余 api。无法推断要调用哪个 API”此错误。

这就是我调用 API 的方式

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

提前致谢

ios swift amazon-cognito aws-amplify-cli
1个回答
0
投票

我们遇到了类似的问题并已成功解决。

您看到的错误告诉您 Amplify 无法决定使用哪个端点 url,因为配置指定了多个端点 url。

为了使用多个端点,您需要明确告知要使用哪个端点。

RESTRequest
初始化器中有一个专用参数来执行此操作,称为
apiName
,例如:

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

创建

amplifyconfiguration.json
对象时,您需要在此初始化程序中传递
RESTRequest
文件中配置的 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"])

© www.soinside.com 2019 - 2024. All rights reserved.