我在我的 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)
提前致谢
我们遇到了类似的问题并已成功解决。
您看到的错误告诉您 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"])