Ein von API Gateway generiertes Android-SDK für eine REST-API verwenden
In diesem Abschnitt beschreiben wir die Schritte zur Verwendung eines Android-SDKs, das mit API Gateway für eine REST-API generiert wurde. Bevor Sie fortfahren, müssen Sie die unter beschriebenen Schritte ausführe Generieren von SDKs für eine API mit der API Gateway-Konsole.
Das generierte SDK ist nicht mit Android 4.4 und früheren Versionen kompatibel. Weitere Informationen finden Sie unter Wichtige Hinweise zu Amazon API Gateway.
So installieren und verwenden Sie ein Android-SDK, das von API Gateway generiert wurde:
-
Extrahieren Sie den Inhalt der von API Gateway generierten ZIP-Datei, die Sie zuvor heruntergeladen haben.
-
Laden Sie Apache Maven
(vorzugsweise Version 3.x) herunter und installieren Sie das Programm. -
Laden Sie JDK 8
herunter und installieren Sie die Software. -
Legen Sie die
JAVA_HOME
-Umgebungsvariable fest. -
Führen Sie den Befehl mvn install aus, um die kompilierten Artefaktdateien in Ihrem lokalen Maven-Repository zu installieren. Dadurch wird ein Ordner namens
target
erzeugt, der die kompilierte SDK-Bibliothek enthält. -
Kopieren Sie die SDK-Datei (ihr Name leitet sich von der Artifact-ID und der Artifact-Version ab, die Sie beim Generieren des SDK angegeben haben, z. B.
simple-calcsdk-1.0.0.jar
) aus dem Ordnertarget
sowie alle anderen Bibliotheken aus dem Ordnertarget/lib
in den Ordnerlib
in Ihrem Projekt.Bei Verwendung von Android Studio erstellen Sie unterhalb des Client-App-Moduls einen Ordner namens
libs
und kopieren Sie die erforderliche JAR-Datei in diesen Ordner. Überprüfen Sie, ob der Abschnitt mit den Abhängigkeiten in der gradle-Datei folgende Informationen enthält.compile fileTree(include: ['*.jar'], dir: 'libs') compile fileTree(include: ['*.jar'], dir: 'app/libs')
Stellen Sie sicher, dass keine doppelten JAR-Dateien deklariert werden.
-
Verwenden Sie die
ApiClientFactory
-Klasse, um das von API Gateway generierte SDK zu initialisieren. Zum Beispiel:ApiClientFactory factory = new ApiClientFactory(); // Create an instance of your SDK. Here, 'SimpleCalcClient.java' is the compiled java class for the SDK generated by API Gateway. final SimpleCalcClient client = factory.build(SimpleCalcClient.class); // Invoke a method: // For the 'GET /?a=1&b=2&op=+' method exposed by the API, you can invoke it by calling the following SDK method: Result output = client.rootGet("1", "2", "+"); // where the Result class of the SDK corresponds to the Result model of the API. // // For the 'GET /{a}/{b}/{op}' method exposed by the API, you can call the following SDK method to invoke the request, Result output = client.aBOpGet(a, b, c); // where a, b, c can be "1", "2", "add", respectively. // For the following API method: // POST / // host: ... // Content-Type: application/json // // { "a": 1, "b": 2, "op": "+" } // you can call invoke it by calling the rootPost method of the SDK as follows: Input body = new Input(); input.a=1; input.b=2; input.op="+"; Result output = client.rootPost(body); // where the Input class of the SDK corresponds to the Input model of the API. // Parse the result: // If the 'Result' object is { "a": 1, "b": 2, "op": "add", "c":3"}, you retrieve the result 'c') as String result=output.c;
-
Wenn Sie einen Amazon Cognito-Anmeldeinformationsanbieter verwenden möchten, um Aufrufe an Ihre API zu autorisieren, verwenden Sie die
ApiClientFactory
-Klasse, um einen Satz von AWS-Anmeldeinformationen mithilfe des von API Gateway generierten SDKs zu übergeben, wie im folgenden Beispiel gezeigt.// Use CognitoCachingCredentialsProvider to provide AWS credentials // for the ApiClientFactory AWSCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider( context, // activity context "identityPoolId", // Cognito identity pool id Regions.US_EAST_1 // region of Cognito identity pool ); ApiClientFactory factory = new ApiClientFactory() .credentialsProvider(credentialsProvider);
-
Zum Festlegen eines API-Schlüssels unter Verwendung des von API Gateway generierten SDKs verwenden Sie einen Code ähnlich dem folgenden.
ApiClientFactory factory = new ApiClientFactory() .apiKey("YOUR_API_KEY");