Fetch data
GET requests
To make a GET request, first build a RestOptions object and then use the Amplify.API.get api to issue the request:
1void getTodo() {2 RestOptions options = RestOptions.builder()3 .addPath("/todo")4 .build();5
6 Amplify.API.get(options,7 restResponse -> Log.i("MyAmplifyApp", "GET succeeded: " + restResponse),8 apiFailure -> Log.e("MyAmplifyApp", "GET failed.", apiFailure)9 );10}
1private fun getTodo() {2 val request = RestOptions.builder()3 .addPath("/todo")4 .build()5
6 Amplify.API.get(request,7 { Log.i("MyAmplifyApp", "GET succeeded: $it") },8 { Log.e("MyAmplifyApp", "GET failed.", it) }9 )10}
1private suspend fun getTodo() {2 val request = RestOptions.builder()3 .addPath("/todo")4 .build()5
6 try {7 val response = Amplify.API.get(request)8 Log.i("MyAmplifyApp", "GET succeeded: ${response.data}")9 } catch (error: ApiException) {10 Log.e("MyAmplifyApp", "GET failed", error)11 }12}
1void getTodo() {2 RestOptions options = RestOptions.builder()3 .addPath("/todo")4 .build();5
6 RxAmplify.API.get(options)7 .subscribe(8 restResponse -> Log.i("MyAmplifyApp", "GET succeeded: " + restResponse),9 apiFailure -> Log.e("MyAmplifyApp", "GET failed.", apiFailure)10 );11}
Accessing query parameters & body in Lambda proxy function
To learn more about Lambda Proxy Integration, please visit Amazon API Gateway Developer Guide.
If you are using a REST API which is generated with Amplify CLI, your backend is created with Lambda Proxy Integration, and you can access your query parameters & body within your Lambda function via the event object:
1exports.handler = function(event, context, callback) {2 console.log(event.queryStringParameters);3 console.log('body: ', event.body);4}
Alternatively, you can update your backend file which is located at amplify/backend/function/[your-lambda-function]/app.js
with the middleware:
1const awsServerlessExpressMiddleware = require('aws-serverless-express/middleware');2app.use(awsServerlessExpressMiddleware.eventContext());
Accessing Query Parameters with Serverless Express
In your request handler use req.apiGateway.event
or req.query
:
1app.get('/todo', function(req, res) {2 const query = req.query;3 // or4 // const query = req.apiGateway.event.queryStringParameters5 res.json({6 event: req.apiGateway.event, // to view all event data7 query: query8 });9});
Then you can use query parameters in your path as follows:
1RestOptions options = RestOptions.builder()2 .addPath("/todo")3 .addQueryParameters(Collections.singletonMap("q", "test"))4 .build();5
6Amplify.API.get(options,7 response -> Log.i("MyAmplifyApp", "GET succeeded: " + response),8 error -> Log.e("MyAmplifyApp", "GET failed.", error)9);
1val request = RestOptions.builder()2 .addPath("/todo")3 .addQueryParameters(mapOf("q" to "test"))4 .build()5
6Amplify.API.get(request,7 { Log.i("MyAmplifyApp", "GET succeeded: $it") },8 { Log.e("MyAmplifyApp", "GET failed", it) }9)
1val request = RestOptions.builder()2 .addPath("/todo")3 .addQueryParameters(mapOf("q" to "test"))4 .build()5
6try {7 val response = Amplify.API.get(request)8 Log.i("MyAmplifyApp", "GET succeeded: $response.")9} catch (error: ApiException) {10 Log.e("MyAmplifyApp", "GET failed", error)11}
1RestOptions options = RestOptions.builder()2 .addPath("/todo")3 .addQueryParameters(Collections.singletonMap("q", "test"))4 .build();5
6RxAmplify.API.get(options)7 .subscribe(8 response -> Log.i("MyAmplifyApp", "GET succeeded: " + response),9 error -> Log.e("MyAmplifyApp", "GET failed.", error)10 );