В этом посте приведен простой пример вызовов 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 Джерома Версринга в блоге Технических заметок .

