Siguiendo la documentación de introducción para la API REST de Amplify Flutter, la solicitud POST generada automáticamente a continuación para ExpressJS genera el siguiente error:
SyntaxError: Token inesperado ' en JSON en la posición 1 en JSON.parse
La solicitud GET devuelve bien, pero al cambiar a POST y agregar el campo de body a continuación de la documentación, se devuelve el error. ¿Cómo se puede llamar con éxito una solicitud POST desde Flutter usando la API REST de Amplify?
Solicitud GET de Flutter - (sin error)
Future<void> callAPI() async { try { RestOptions options = RestOptions( path: '/example', apiName: 'ExpressJSRESTAPI' ); RestOperation restOperation = Amplify.API.get( restOptions: options ); RestResponse response = await restOperation.response; print('GET call succeeded'); print(new String.fromCharCodes(response.data)); } on ApiException catch (e) { print('GET call failed: $e'); } }Solicitud POST de Flutter (arroja un error)
Future<void> callAPI() async { try { RestOptions options = RestOptions( path: '/example', body: Uint8List.fromList('{\'name\':\'Mow the lawn\'}'.codeUnits), apiName: 'ExpressJSRESTAPI' ); RestOperation restOperation = Amplify.API.post( restOptions: options ); RestResponse response = await restOperation.response; print('POST call succeeded'); print(new String.fromCharCodes(response.data)); } on ApiException catch (e) { print('POST call failed: $e'); } }Ruta de solicitud ExpressJS GET
app.get('/example', function(req, res) { // Add your code here res.json({success: 'get call succeed!', url: req.url}); });Ruta de solicitud POST de ExpressJS
app.post('/example', function(req, res) { // Add your code here res.json({success: 'post call succeed!', url: req.url, body: req.body}) });En la documentación, observe la barra invertida (\) en los argumentos fromList de sus RestOptions.
RestOptions options = RestOptions( path: '/todo', body: Uint8List.fromList('{\'name\':\'Mow the lawn\'}'.codeUnits) );