Я нашел много примеров, которые задают подобные вопросы. Тем не менее, в большинстве советов говорится, что вы просто должны использовать @Controller вместо @RestController, если хотите использовать:
//@Controller
@RestController // @Controller and @ResponseBody into one
public class SreAppController {
@GetMapping("/")
public String index() {
return "index";
}
}
Так как это просто возвращает индекс String и не извлекает файл HTML index.html. Я знаю, что @ResponseBody, который находится в теге @RestController, отображает выходные данные из этого вопроса. Итак, я нашел этот учебник, который дает этот код:
@RestController
public class SreAppController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@GetMapping("/greeting")
public Greeting index(@RequestParam(value="name", defaultValue="World") String name){
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
}
Который я хотел бы использовать с AngularJS и форматировать с использованием HTML. В этом руководстве показано, как использовать веб-сервис RESTful, но показано, как использовать http://rest -service.guides.spring.io /reeting . Я попытался поместить localhost: 8080 / приветствие в его место, но это все равно просто дает ошибку 404 для localhost: 8080 и просто возвращает json для localhost: 8080 / приветствие.
Как использовать @RestController с AngularJS и HTML в одном приложении? Намерение состоит в том, чтобы перейти к localhost: 8080 и получить тот же вывод, что и этот урок:
Я знаю, что json от localhost: 8080 / приветствие приходит прямо с контроллера Rest. Я не уверен, почему контроллер angularJS не найден при использовании localhost: 8080.
В учебнике указывается, что для веб-приложения Spring Boot необходимо минимальное количество кода веб-приложения. Предлагаемый app.groovy (показанный ниже), но мой контроллер покоя запускает встроенный сервер Tomcat, поэтому я не думаю, что это проблема.
app.groovy
@Controller class JsApp { }
Javascript и HTML для справки:
app.js
"use strict";
angular.module('demo', []).controller('app', function($scope, $http) {
$http.get('/greeting').
then(function (response) {
$scope.greeting = response.data;
});
});
index.html
<!DOCTYPE html>
<html lang="en" ng-app="demo">
<head>
<meta charset="UTF-8">
<title>Hello AngularJS</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.2/angular.min.js"></script>
<script src="app.js"></script>
</head>
<body>
<div ng-controller="app">
<p>The ID is {{greeting.id}}</p>
<p>The content is {{greeting.content}}</p>
</div>
</body>
</html>
Иерархия проекта