是否可以将参数映射到Spring Rest中的路径?

时间:2013-05-03 06:33:22

标签: spring spring-mvc

我有一个遗留系统,其中查询参数用于使用简单的内部框架确定请求的类/方法。 E.g。

/endpoint?product=foo&action=bar&amount=1.0
/endpoint?product=foo&action=baz&amount=1.0

我想将产品的所有操作映射到一个类,这样可以大大简化管道,例如。

@Controller
@RequestMapping("/endpoint/foo/**")
public class FooController {

  @AutoWire
  private FooProductService s; // one of many beans that have to be wired into lots of classes

  @RequestMapping("/bar")
  public void bar(@PathVariable String amount, Model model) {    
    // implementation omitted
  }
  @RequestMapping("/baz")
  public void baz(@PathVariable String amount, Model model) {    
    // implementation omitted
  }

}

这是已发布的API,因此我们无法更改公共API - >网址无法更改。

我认为也许这可以使用配置,方面甚至是带有自己注释的自定义框架来完成。

1 个答案:

答案 0 :(得分:0)

我相信你可以为product = foo& action = bar& amount = 1.0

做类似的事情
@RequestMapping(value = "product={productName}&action={someaction}&amount={value}", method=RequestMethod.GET)
something(@PathVariable String productName, @PathVariable String someaction, @PathVariable String value)
    if(someaction.equals("bar")) {
        //do bar
    } 
    if(someaction.equals("baz")) {
        //do baz
    } 
}

HTH