Forum Discussion
I think this would be beneficial from a convenience perspective, but you can already accomplish basically the same thing. If you consider that an endpoint is essentially a stand-alone custom component, all you're really doing with an endpoint is rendering output from Freemarker code. If you find yourself wanting to use code "within the community" that you've already added to an endpoint, here's what I would suggest doing...
- Pull the common parts of your code into a Studio Macro. You can create Studio Macros on the same page as Endpoints in Studio. A Studio Macro is essentially just another custom component with the added benefit that it can be included in both custom components and Studio Endpoints (normal custom components cannot be included in Endpoints).
- From your endpoint, include your Studio Macro and reference the common code you added. You may want to create a Freemarker Macro (not to be confused with Studio Macro) or a Freemarker Function to make this easier.
- From your custom component, include your Studio Macro and reference the common code you added, similar to step number 2.
I hope this helps!
- Inactive User12 years ago
Could you help me wrap my head around this? If I want to make a server to server call with the endpoint, and then want to use the resulting response with FreeMarker in a component (ie. use returned JSON data in a component without using javscript)... would that be possible? Thanks
- HaidongG12 years agoLithium Alumni (Retired)
Hi jlutterloh,
sorry, as I know, it is not possible to do this in component (including endpoint result without JavaScript) at this moment.
if you worries about the UI "flashing" effect by including endpoint result with JavaScript, you may want to hide the outter div first, call the endpoint, add generated html and show the div. for exmaple, I created an Endpoint in Studio which reaches some 3-rd party API and generate a HTML, and in my another component, I just do something like this.
<#assign kb_endpoint_url = "/plugins/custom/customer-id-goes-here/community-id-goes-here/endpoint-goes-name-here" /> <@liaAddScript> (function($) { $(document).ready(function() { function callLithiumEndpoint() { $('.my-div-css-class-goes-here').hide(); var jqxhr = $.get("${kb_endpoint_url}" function(data) { console.log("success"); $('.my-div-css-class-goes-here').prepend(data); }) .done(function() { console.log("second success"); }) .fail(function() { console.log("error"); }) .always(function() { console.log("finished"); $('.tmy-div-css-class-goes-here').show(); }); } callLithiumEndpoint(); }); })(LITHIUM.jQuery); </@liaAddScript>
I hope that this is helpful for you.
- cblown12 years agoBoss
Thanks Adam and Haidong. While I can't speak for the OP we are specifically interested in using EndPoints inside Custom Components simply becuase they don't support http.client and EndPoints do :p
Related Content
- 10 years ago
- 7 months ago