2016-11-01 54 views
0

我想知道是否有方法根據請求的參數返回不同的東西的可能性。舉例:基於與Spring請求的參數返回不同的東西?

@RestController 
public class GreetingController { 

private static final String templateForName = "Hello, %s!"; 
private static final String templateForTest = "Testing new output, which is %s!"; 

@RequestMapping("/greeting") 
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name 
         ,@RequestParam(value="test", defaultValue="TEST value") String test 
         ) { 
       //An if here that would decide which param was requested? 
       return new Greeting(String.format(templateForName, name)); 

} 

這裏顯示的是「Hello,User!」如果請求?name=User 是否可以顯示「測試新輸出,這是測試!」被要求與?test=test

我纔剛剛開始使用Spring做任何事情,所以如果有什麼不清楚或提供的信息是不夠的,不要讓我知道,我會盡力解釋好。

+0

爲什麼不把參數作爲PATH參數的一部分,如果他們總是會有不同的,定義明確的行爲? – Andonaeus

+0

我不知道我是否明白你的意思,你能舉個例子嗎? – ForInfinity

+0

當然我會在今天有一段時間的時候添加一個答案 – Andonaeus

回答

0

你可以簡單地添加if else conditions回到正確的問候對象,如下:

@RequestMapping("/greeting") 
    public String greeting(@RequestParam(value="name", defaultValue="World") String name 
          ,@RequestParam(value="test", defaultValue="TEST value") String test 
          ) { 
     Greeting greeting = null; 
     if(name.equals("User")) { 
      greeting = new Greeting(String.format(templateForName, name)); 
     } else if(test.equals("test")) { 
       greeting = new Greeting(String.format(templateForTest, test)); 
     } 
     return greeting; 
    } 
+0

謝謝!你也許知道是否可以使用兩個不同的'@ RequestMapping'來使用'public returnType greeting'的相同方法?或者,如果可能的話,也許可以從Map <>選擇。 – ForInfinity

0

每我的意見,使用路徑參數:

@RequestMapping("/greeting/name/{name}") 
public Greeting nameGreeting(@PathParam(value="name", defaultValue="World") String name) { 

    return new Greeting(String.format(templateForName, name)); 

} 

@RequestMapping("/greeting/test/{test}") 
public Greeting testGreeting(@PathParam(value="test", defaultValue="TEST value") String name) { 

    return new Greeting(String.format(templateForTest, test)); 

} 
0

只需使用一個@RequestParam和測試的你正在尋找的價值。

@RequestMapping("/greeting") 
public String greeting(@RequestParam(value="name", defaultValue="World") String name) { 
    if(name.equals("Test")) { 
     return new Greeting(String.format(templateForTest, test)); 
    } 
    return new Greeting(String.format(templateForName, name)); 
} 
相關問題