Component with endpoint and 3rd party REST API
Hey,
I am trying to build a component that does a callout to a 3rd party rest api. I can get a JSON response using POSTMAN with that url. I have build out the endpoint like this:
<#assign baseUrl = "http://success.mindtouch.com/@api/deki/site/search?q=sso&limit=2&dream.out.format=json"/> <#assign req = http.client.request(baseUrl) /> <#assign response = req.call("GET") />
In my component I am calling the endpoint like this:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script> var handleSuccess = function(data){ console.log("success", data); } var request = $.ajax({ url:"/yboys66435/plugins/custom/zuora/zuora/mindtouch_search", type: "GET", dataType: "json", data: {} }); request.done(handleSuccess); request.fail(function(jqXHR, textStatus) { console.log('Error.', textStatus); }); </script> Hello
When I go to the page that has the component I am seeing a parsererror in the JS console and am not quite sure how to debug this.
When I go to the endpoint in the browser it returns this:
lithium.coreapi.webui.template.models.HttpClientResponseTemplateModel@125d6b34
This makes me think that it is running the request and getting the response. But how do I get/use this in the component? Is there a way to print out the contents of the HttpClientResponseTemplateModel?
Regarding your endpoint code (see comments):
<#assign baseUrl = "http://success.mindtouch.com/@api/deki/site/search?q=sso&limit=2&dream.out.format=json"/> <#assign req = http.client.request(baseUrl) />
<#-- if you actually want to use the response with FreeMarker, the JSON has to be converted to a FreeMarker hash like that -->
<#assign req = req.json() />
<#-- but careful, if you do that, you cannot simply print the response JSON string with ${...} anymore as FreeMarker hashes are not auto-convertable to strings (e.g. JSON) -->
<#assign response = req.call("GET") /> <#-- shouldn't this be get(), where did you find that call() method? --> <#assign response = req.get() />
<#-- for above see http://community.lithium.com/t5/Developers-Knowledge-Base/http-client-FreeMarker-Context-Object/ta-p/80614 --> <#-- and then to output the response you have to do something like --> ${response.content}
<#-- see http://community.lithium.com/t5/Developers-Knowledge-Base/http-client-response-FreeMarker-context-object/ta-p/80622 -->and make sure the MIME type of the endpoint is set to JSON.
From the code you provided I cannot see if you are actually outputting something in the endpoint?