从MVC控制器调用REST API(Spring MVC)

时间:2014-10-20 20:39:48

标签: java rest spring-mvc

编辑 -

这是一个愚蠢的问题 - 请忽略它。离开去正确学习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的操作。

实际上,即使我写这篇文章,我也意识到这不是你的意思,我不会想。

1 个答案:

答案 0 :(得分:0)

这实际上是我处理自己的Web应用程序的方式。对于Person资源,创建一个返回PersonRestController REST表示的PersonResource,并将PersonRestController注入PersonHtmlController。 HTML控制器上的处理程序方法调用REST控制器并将PersonResource(以及其他相关属性)提供给HTML模板的模型。