Будучи новичком в инфраструктуре Spark и AngularJS, я пытался создать простое приложение REST. Однако я, по-видимому, не могу получить данные с сервера и отображать с помощью Angular.
Я начал с простой задачи:
@Data
public class Todo {
private String title = "foo";
private String description= "bar" ;
}
Чтобы отобразить todo в браузере, я отправляю объект JSON в качестве ответа на запрос.
get("/tasks", (request, response) -> {
response.type("application/json");
Todo todo = new Todo();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
String data = mapper.writeValueAsString(todo);
return data;
});
Угловая часть выглядит следующим образом:
(function() {
var app = angular.module('todoapp', []);
app.controller('TaskController', ['$http', function($http) {
var store = this;
store.tasks = [];
$http.get('/tasks').success(function(data) {
store.tasks = data;
});
}]);
})();
И index.html:
<ul ng-controller="TaskController as taskCtrl">
<li ng-repeat="task in taskCtrl.tasks">{{task.title}}, {{task.description}}</li>
</ul>
После запуска Spark и входа в http://localhost: 4567/tasks в браузере он показывает только представление JSON:
{
"title": "foo",
"description": "bar"
}
Что я делаю не так?
В коде Spark вы создаете конечную точку "/tasks", которую вы пытаетесь поразить своим угловым кодом. Когда вы пытаетесь запустить это в браузере, вы просто нажимаете на свою конечную точку api//api, которая возвращает ожидаемый ответ. Вам нужно создать другую конечную точку в Spark, которая будет обслуживать соответствующий код HTML и JavaScript.
Я не уверен, какая версия углового вы используете, но в версии, которую я использую, $http
возвращает другую структуру данных, чем та, которую вы показываете.
Поэтому, чтобы получить данные из запроса $http
я бы сделал что-то вроде:
$http({
url: '/tasks',
method: 'get'
}).then(function(result){
$scope.tasks = result.data;
});
Данные result.data - это то, где структура данных в отчетах $http
отличается от того, что я вижу в вашем коде.
Попробуйте console.log(data)
чтобы посмотреть, как возвращается звонок.