RESTEasy 中的 InternalDispatcher

RESTEasy 中的 InternalDispatcher 可以将一个请求 Forward 给另一个请求,通过这种方法可以实现API的迁移,在保留原URL服务的基础上,将服务迁至另一URL,本文给出一个例子:

假设我们想将用户的请求从:

http://0.0.0.0/users/forwards/{name}


转向至:

http://0.0.0.0/users/{name}


可在代码中使用InternalDispatcher来实现:


package org.bluedash.resteasy.interceptors;

import java.net.URI;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.ext.RuntimeDelegate;

import org.jboss.resteasy.spi.InternalDispatcher;

@Path("/users")
public class UserServlet {

	@Path("{name}")
	@GET
	@Produces("text/plain")
	public String getUsers(@PathParam("name") String name) {
		UriBuilder.fromUri(URI.create("http://localhost"));
		System.out.println(RuntimeDelegate.getInstance());
		return "User: " + name;
	}

	@Path("forwards/{name}")
	@GET
	@Produces("text/plain")
	public String getMockedUsers(@PathParam("name") String name,
			@Context InternalDispatcher dispatcher) {
		return (String) dispatcher.getEntity("/users/" + name);

	}

}


这样,当用户访问/users/fowards/{name}时,InternalDispatcher 会将请求转至 /users/{name}所对应的代码来处理。

你可能感兴趣的:(java,jboss,resteasy)