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>
HelloWhen 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?