NUTZ能不能同一路径 根据参数访问不同的方法 比如架个注解什么的
怎么能实现
我想根据 不一样的接口版本号参数 访问不同的方法 但是路径是一样的
14 回复
@wendal 但是不太想这样 跟径太多了
@wendal 我是想 能不能通过 路径 完事 在接口方法上在加个注解 @version("V1")
这种办法 能不能弄
@wendal 想了想,第三点比较靠谱
@wendal 手册上也没有使用方法啊。。 能不能来个例子
@wendal 我的自己实现一下 public void add(ActionChainMaker maker, ActionInfo ai, NutConfig config) ?
是这样嘛
@wendal 让我自己写我也没那实力 谢谢了 我试试 看能搞出来不
@wendal 想到个办法 在add的时候 我取取 ai.getMethod() 上注解的值拼到path上
这样就能对看似想同的路径 生成一个唯一的 path Key
在请求的时候 我通过参数里的 版本号和请求路径在拼装一个path
这样对客户端来说 路径没办 对服务端 又能分辨出唯一路径 关键是还不用改几行代码
这方案行不
你能想通一个方案且可执行,那就是可行咯
顺便提一下我的方案(不一定比你做的方便,只是多个思路给你参考.). UrlMappingImpl的get方法
public ActionInvoker get(ActionContext ac) {
RequestPath rp = Mvcs.getRequestPathObject(ac.getRequest()); // 首先,这里得到req
String path = rp.getPath(); // 这里根据req里面的特定参数/header, 改变path, 例如 if (req.getParams("_version") != null) path += xxx; // 换个路径之类的.
ac.setSuffix(rp.getSuffix());
ActionInvoker invoker = root.get(ac, path);
if (invoker != null) {
ActionChain chain = invoker.getActionChain(ac);
if (chain != null) {
if (log.isDebugEnabled()) {
log.debugf("Found mapping for [%s] path=%s : %s",
ac.getRequest().getMethod(),
path,
chain);
}
return invoker;
}
}
if (log.isDebugEnabled())
log.debugf("Search mapping for path=%s : NOT Action match", path);
return null;
}
添加回复
请先登陆