编辑 -
这是一个愚蠢的问题 - 请忽略它。离开去正确学习Java。
-
我想创建一个可以在外部使用的API,但我也希望为同一个API创建自己的前端。
如果我创建一个MVC控制器&在同一个应用程序中的REST控制器,我可以从MVC控制器调用REST API而无需使用"外部" http电话,这看起来有点浪费?
(编辑 - 最初链接到另一个问题,但它错了。无法找到正确的问题。)
显然提出了我是否应该进一步提出的问题,但我认为这是主观的。除此之外,我对此表示欢迎。
编辑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的操作。
实际上,即使我写这篇文章,我也意识到这不是你的意思,我不会想。
答案 0 :(得分:0)
这实际上是我处理自己的Web应用程序的方式。对于Person
资源,创建一个返回PersonRestController
REST表示的PersonResource
,并将PersonRestController
注入PersonHtmlController
。 HTML控制器上的处理程序方法调用REST控制器并将PersonResource
(以及其他相关属性)提供给HTML模板的模型。