編輯 -從MVC控制器調用REST API(Spring MVC)
這是一個愚蠢的問題 - 請忽略它。走開去正確學習Java。
-
我想創建一個可以在外部使用的API,但我也想創建自己的前端相同的API。
如果我在同一個應用程序中創建一個REST控制器的MVC控制器&,我可以從MVC控制器調用REST API而不進行「外部」http調用,這看起來有點浪費? (編輯 - 最初連接到另一個問題,但它是錯誤的,找不到正確的一個如此刪除)。
顯然提出了我是否應該這樣做的進一步的問題,但我認爲這是主觀的。除此之外,我希望對此表示歡迎。
EDIT 2(添加一些代碼響應於chrylis)
所以,如果我創建一個類這樣的(例如,從一個教程地方複製)
public class Greeting {
private final long id;
private final String content;
public Greeting(long id, String content) {
this.id = id;
this.content = content;
}
public long getId() {
return id;
}
public String getContent() {
return content;
}
}
和其餘控制器這樣其如果直接從瀏覽器調用將返回JSON數據:
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", required=false, defaultValue="World") String name) {
return new Greeting(counter.incrementAndGet(),
String.format(template, name));
}
}
然後我把它從我的HTML控制器是這樣的:
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
@RequestMapping("/")
public String home(Model model) {
Greeting gr=new Greeting(1,"Hi");
logger.info(gr.getContent());
model.addAttribute("modelName",gr.getContent());
return "home";
}
}
是你的意思嗎?它似乎工作。我看到的唯一問題是我直接在課堂上工作,而沒有執行其餘api的操作。
其實,即使在我寫這篇文章時,我意識到這不是你的意思,我不認爲。
謝謝。如果你能解釋一下,或者指給我一些有助於注射的地方,我將非常感激。我對所有這些都是陌生的,雖然我在搜索,但我不確定我是否使用了正確的術語。 此外,我一直在閱讀有關使用MockMvc進行測試,這似乎與我正在尋找的東西類似。我認爲使用測試方法並不好?只是一個想法。 – beigerac 2014-10-21 07:35:24
REST api返回一個json打包的響應也可能是相關的。 – beigerac 2014-10-21 07:37:45
@beigerac Spring MVC'@ RestController's返回POJO,你可以像注入其他Spring bean一樣注入控制器和調用方法。 – chrylis 2014-10-21 08:21:23