Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detect ajax request call

(I'm new to java world)

I'm learning dropwizard and I want to create resource that is returning view (html) or json depending on request type (ajax or not)

Example:

@Path("/")
public class ServerResource {

    @GET
    @Produces(MediaType.TEXT_HTML)
    public MainView getMainView() {
        return new MainView("Test hello world");
    }
}

How to add to this resource at the same Path JSON response if request is AJAX?

UPDATE 1. I created something like this:

@Path("/")
public class ServerResource {

    @GET
    @Consumes(MediaType.TEXT_HTML)
    @Produces(MediaType.TEXT_HTML)
    public MainView getMainView(@HeaderParam("X-Requested-With") String requestType) {
        return new MainView("hello world test!");
    }

    @GET
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public List<String> getJsonMainView() {
        List<String> list = new ArrayList<String>();
        for (Integer i = 0; i < 10; i++) {
            list.add(i, "test" + i.toString());
        }
        return list;
    }
}

Looks like this is working as expected, but I know that is not a good practice.

like image 447
sliwinski.lukas Avatar asked Mar 03 '26 12:03

sliwinski.lukas


1 Answers

Ajax requests USUALLY have (not always) X-Requested-With: XMLHttpRequest request header. See How to differentiate Ajax requests from normal Http requests?

The following code hasn't been tested.

@Path("/")
public class ServerResource {
    @GET
    @Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON})
    public MainView getMainView(@HeaderParam("X-Requested-With") String requestType) {
        if(requestType != null && requestType.equals("XMLHttpRequest")) {
           //The request is AJAX
        } else {
           //The request is not AJAX
        }
        ...
    }
}
like image 156
Paulino III Avatar answered Mar 06 '26 01:03

Paulino III



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!