В этом посте приведен простой пример вызовов REST для веб-приложения Spring MVC. Он основан на примере обслуживания статических ресурсов с помощью Spring MVC и выборки JSON с помощью Ajax In Spring MVC Context . Код доступен на GitHub в каталоге Spring-REST-With-Ajax.
Главная страница
Наша главная страница содержит четыре кнопки, связанные с функциями Javascript, выполняющими вызовы Ajax:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
 | 
...<body><h1>Welcome To REST With Ajax !!!</h1><button type='button' onclick='RestGet()'>GET</button><button type='button' onclick='RestPut()'>PUT</button><button type='button' onclick='RestPost()'>POST</button><button type='button' onclick='RestDelete()'>DELETE</button></body>... | 
Javascript
Наш файл Javascript содержит четыре функции:
| 
 01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62 
63 
64 
65 
66 
67 
68 
69 
70 
71 
72 
73 
 | 
var prefix = '/spring-rest-with-ajax';var RestGet = function() {        $.ajax({        type: 'GET',        url:  prefix + '/MyData/' + Date.now(),        dataType: 'json',        async: true,        success: function(result) {            alert('At ' + result.time                + ': ' + result.message);        },        error: function(jqXHR, textStatus, errorThrown) {            alert(jqXHR.status + ' ' + jqXHR.responseText);        }   });}var RestPut = function() {    var JSONObject= {        'time': Date.now(),        'message': 'User PUT call !!!'    };    $.ajax({        type: 'PUT',        url:  prefix + '/MyData',        contentType: 'application/json; charset=utf-8',        data: JSON.stringify(JSONObject),        dataType: 'json',        async: true,        success: function(result) {            alert('At ' + result.time                + ': ' + result.message);        },        error: function(jqXHR, textStatus, errorThrown) {            alert(jqXHR.status + ' ' + jqXHR.responseText);        }    });}var RestPost = function() {        $.ajax({        type: 'POST',        url:  prefix + '/MyData',        dataType: 'json',        async: true,        success: function(result) {            alert('At ' + result.time                + ': ' + result.message);        },        error: function(jqXHR, textStatus, errorThrown) {            alert(jqXHR.status + ' ' + jqXHR.responseText);        }    });}var RestDelete = function() {        $.ajax({        type: 'DELETE',        url:  prefix + '/MyData/' + Date.now(),        dataType: 'json',        async: true,        success: function(result) {            alert('At ' + result.time                + ': ' + result.message);        },        error: function(jqXHR, textStatus, errorThrown) {            alert(jqXHR.status + ' ' + jqXHR.responseText);        }    });} | 
контроллер
Наш контроллер захватывает вызовы REST и возвращает JSON. В реальных приложениях можно выполнять операции CRUD, а не возвращать JSON:
| 
 01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
 | 
@Controller@RequestMapping(value = '/MyData')public class MyRESTController {    @RequestMapping(value='/{time}', method = RequestMethod.GET)    public @ResponseBody MyData getMyData(            @PathVariable long time) {        return new MyData(time, 'REST GET Call !!!');    }    @RequestMapping(method = RequestMethod.PUT)    public @ResponseBody MyData putMyData(            @RequestBody MyData md) {        return md;    }    @RequestMapping(method = RequestMethod.POST)    public @ResponseBody MyData postMyData() { return new MyData(System.currentTimeMillis(),            'REST POST Call !!!');    }    @RequestMapping(value='/{time}', method = RequestMethod.DELETE)    public @ResponseBody MyData deleteMyData(            @PathVariable long time) {        return new MyData(time, 'REST DELETE Call !!!');    }} | 
Запуск примера
После компиляции пример можно запустить с помощью mvn tomcat: run. Затем просмотрите:
HTTP: // локальный: 8585 / весна-остальное-с-Аякса /
Главная страница будет отображаться:
Если вы нажмете на любую кнопку, появится всплывающее окно:
Смотрите здесь для получения дополнительной информации о REST • Больше сообщений, связанных с Spring здесь .
Ссылка: Spring MVC REST Calls With Ajax от нашего партнера JCG Джерома Версринга в блоге Технических заметок .

