Search code examples
javascriptjqueryajaxgetamplifyjs

Amplifyjs GET request with body


I'd like to be able to use GET with message-body using AmplifyJS.

My question is specifically about how to achieve that with AmplifyJS.

Synthetic tests work fine (Fiddler being my test client). But when I do it through AmplifyJS, the "body" is added to the query string. (Edit: Is this a limitation of underlying jQuery "ajax" or that's AmplifyJS's choice)

amplify.request.define('trickyGet', 'ajax', {
                url: 'entity/{param}',
                dataType: 'json',
                type: 'GET',
                contentType: '???'
            });

then

amplify.request({
                    resourceId: 'trickyGet',
                    data: { param: 'paramVal', data: JSON.stringify({'complex1': 'complex1Val'}) },
                    //data: { param: 'paramVal', data: {'complex1': 'complex1Val'}) },
                    success: callbacks.success,
                    error: callbacks.error
                });

I tried all kinds of combinations with how my complex data is represented and what content-type to use.

If I change type to POST (and of course change my API end point), everything works (data is in the message-body). But with get, data is appended to query string (by AplifyJS).


Solution

  • amplify.js uses jQuery's ajax() method, which in turn limits how data is sent during get requests.