Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

I18n json as API

Avatar

Level 1

Hi,

I am trying to build a API on top of i18n. So I can expose it for other channels to consume it. Essentially, I don't want to expose the full json dict. 

I want something like this, <domain>/<country>/<lang>/<pagecode>/<feature>.json and expecting it to give me the filtered json for the feature. I could do it for .html. which is giving me the json (as string) in the Html output. But when I use .json it is not. I have a json rendition (json.jsp). It is Getting handled by default servlet and giving me error. Please help. I checked .json extension is there in the sling get servlet. 

 

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi @sagarneelb ,

 

You can have a custom servlet based on resource type or selector e.g.

You can call<domain>/<country>/<lang>/<pagecode>/<feature>.jsondict

 

@Component(metatype = false)
@Service(Servlet.class)
@Properties({
@Property(name = "sling.servlet.selectors", value = { "jsondict" }) })
public class DefaultDictionarySelector extends SlingSafeMethodsServlet {
////// Filter logic based on feature
///// Write json
}

 

View solution in original post

4 Replies

Avatar

Employee

If the JSON request is being handled by org.apache.sling.servlets.get.DefaultGetServlet -- then why not set enable.json to false?

Avatar

Level 1
I tried that, to make it false. did not help

Avatar

Community Advisor

@sagarneelb can you please create a resource type servlet with extension JSOn and try please?

Avatar

Correct answer by
Community Advisor

Hi @sagarneelb ,

 

You can have a custom servlet based on resource type or selector e.g.

You can call<domain>/<country>/<lang>/<pagecode>/<feature>.jsondict

 

@Component(metatype = false)
@Service(Servlet.class)
@Properties({
@Property(name = "sling.servlet.selectors", value = { "jsondict" }) })
public class DefaultDictionarySelector extends SlingSafeMethodsServlet {
////// Filter logic based on feature
///// Write json
}