【问题标题】:How to call Spring Boot RESt api using Spring MVC?如何使用 Spring MVC 调用 Spring Boot REST api?
【发布时间】:2020-09-12 00:51:35
【问题描述】:

我已经使用 Spring Boot 创建了 REST api。 所以,这就是它的片段:

@RestController
@RequestMapping("/api/employee")
public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;

    @GetMapping(value = "/all", produces = "application/json")
    public ResponseEntity<List<Employee>> getAllEmployees() {
        return ResponseEntity.ok(employeeService.findall());
    }

现在,我想创建更像 MVC 应用程序部分 - 显示所有员工使用 thymeleaf 的简单视图。 (使用这个应用程序的简单 UI 比发送 curl 请求更方便)

@Controller
public class MainPageController {

    @GetMapping("/employees")
    public String showEmployees() {

        // i don't know what to do here

        return "employeesPage";
    }

这样做的适当方法是什么?有没有更简单的方法来做到这一点? 期待您的回答!

【问题讨论】:

    标签: spring-boot spring-mvc spring-rest


    【解决方案1】:

    因此,您所做的与在 EmployeeController 上所做的完全相同,但您返回的不是 JSON,而是一个视图。

    • 通过 EmployeeService 获取您的员工并将他们放在一个集合中
    • 在 /templates 文件夹下创建您的员工视图(有很多关于如何操作的教程)
    • 将此视图与您的员工集合一起返回

    例子:

    @GetMapping(value = "employees")
    public ModelAndView showEmployees() {
        ModelAndView mav = new ModelAndView("employeesPage");
        mav.addObject("employees", employeeService.findall());
        return mav;
    }
    

    点击此处了解更多详细信息: https://www.thymeleaf.org/doc/articles/springmvcaccessdata.html

    【讨论】:

    • 是的,但是有没有办法显式使用现有的 REST api 端点,而不是使用 employeeService?
    • 你可以调用其他端点,但你必须解析 JSON 结果并将其发送到你的视图,它看起来非常奇怪。这就是为什么你有你的服务,为了避免如何让你的员工的代码重复,有多个这样的端点是很正常的。然而,如果您担心数据库性能(许多请求,bla bla bla ...),您可以检查@Cacheable 注释(spring.io/guides/gs/caching
    • 但如果你还想这样做,stackoverflow.com/questions/52321463/… 就在这里
    • 谢谢,RestTemplate() 似乎是我需要的。困扰我的是我需要传递(硬编码)整个 uri,例如:htttp://localhost...bla bla bla,而不是以某种方式从退出 restcontroller 中获取它
    猜你喜欢
    • 2020-03-15
    • 2018-10-06
    • 1970-01-01
    • 2015-12-09
    • 2014-07-19
    • 2020-11-02
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多