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:
void getTodo() { RestOptions options = RestOptions.builder() .addPath("/todo") .build();
Amplify.API.get(options, restResponse -> Log.i("MyAmplifyApp", "GET succeeded: " + restResponse), apiFailure -> Log.e("MyAmplifyApp", "GET failed.", apiFailure) );}
private fun getTodo() { val request = RestOptions.builder() .addPath("/todo") .build()
Amplify.API.get(request, { Log.i("MyAmplifyApp", "GET succeeded: $it") }, { Log.e("MyAmplifyApp", "GET failed.", it) } )}
private suspend fun getTodo() { val request = RestOptions.builder() .addPath("/todo") .build()
try { val response = Amplify.API.get(request) Log.i("MyAmplifyApp", "GET succeeded: ${response.data}") } catch (error: ApiException) { Log.e("MyAmplifyApp", "GET failed", error) }}
void getTodo() { RestOptions options = RestOptions.builder() .addPath("/todo") .build();
RxAmplify.API.get(options) .subscribe( restResponse -> Log.i("MyAmplifyApp", "GET succeeded: " + restResponse), apiFailure -> Log.e("MyAmplifyApp", "GET failed.", apiFailure) );}
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:
exports.handler = function(event, context, callback) { console.log(event.queryStringParameters); console.log('body: ', event.body);}
Alternatively, you can update your backend file which is located at amplify/backend/function/[your-lambda-function]/app.js
with the middleware:
const awsServerlessExpressMiddleware = require('aws-serverless-express/middleware');app.use(awsServerlessExpressMiddleware.eventContext());
Accessing Query Parameters with Serverless Express
In your request handler use req.apiGateway.event
or req.query
:
app.get('/todo', function(req, res) { const query = req.query; // or // const query = req.apiGateway.event.queryStringParameters res.json({ event: req.apiGateway.event, // to view all event data query: query });});
Then you can use query parameters in your path as follows:
RestOptions options = RestOptions.builder() .addPath("/todo") .addQueryParameters(Collections.singletonMap("q", "test")) .build();
Amplify.API.get(options, response -> Log.i("MyAmplifyApp", "GET succeeded: " + response), error -> Log.e("MyAmplifyApp", "GET failed.", error));
val request = RestOptions.builder() .addPath("/todo") .addQueryParameters(mapOf("q" to "test")) .build()
Amplify.API.get(request, { Log.i("MyAmplifyApp", "GET succeeded: $it") }, { Log.e("MyAmplifyApp", "GET failed", it) })
val request = RestOptions.builder() .addPath("/todo") .addQueryParameters(mapOf("q" to "test")) .build()
try { val response = Amplify.API.get(request) Log.i("MyAmplifyApp", "GET succeeded: $response.")} catch (error: ApiException) { Log.e("MyAmplifyApp", "GET failed", error)}
RestOptions options = RestOptions.builder() .addPath("/todo") .addQueryParameters(Collections.singletonMap("q", "test")) .build();
RxAmplify.API.get(options) .subscribe( response -> Log.i("MyAmplifyApp", "GET succeeded: " + response), error -> Log.e("MyAmplifyApp", "GET failed.", error) );