Содержание
Недавно мне пришлось передавать данные JSON в REST Service, и у меня не было простого клиента. Но создал очень простую Java-программу, которая считывает данные JSON из файла и отправляет их в службу REST.
Передача репрезентативного состояния (REST) получила широкое признание в Интернете как более простая альтернатива веб-сервисам на основе SOAP и WSDL . Основным свидетельством этого сдвига в дизайне интерфейса является принятие REST основными поставщиками услуг Web 2.0, включая Yahoo, Google и Facebook, которые устарели или перешли на интерфейсы на основе SOAP и WSDL в пользу более простого в использовании, ресурсно-ориентированная модель выставления своих услуг. В этой статье Алекс Родригес знакомит вас с основными принципами REST.
Давайте начнем кодировать это:
- Создать веб-сервис RESTFul
- Java-файл: CrunchifyRESTService.java
- файл web.xml
- Создать клиент РЕСТСервис
- CrunchifyRESTServiceClient.java file
Другой должен прочитать: Spring MVC Example / Tutorial: Hello World — Spring MVC 3.2.1
Шаг 1
В Eclipse => File => New => Dynamic Web Project , Назовите это как « CrunchifyTutorials ». Ниже учебник также работает с Tomcat 8 ,
Шаг 2 Создайте файл дескриптора развертывания
Если ты не видишь web.xml (дескриптор развертывания) под WebContentWEB-INF затем выполните следующие действия .
открыто web.xml и замените содержимое следующим содержанием:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
xml version = 1.0 encoding = UTF-8 ?>
< web — app xmlns = http://java.sun.com/xml/ns/javaee xmlns : xsi = http://www.w3.org/2001/XMLSchema-instance
xsi : schemaLocation = http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd»
версия = 3.0 >
< display — name > CrunchifyRESTJerseyExample < / display — name >
< добро пожаловать — файл — список >
< welcome — file > index . html < / welcome — file >
< welcome — file > index . htm < / welcome — file >
< welcome — file > index . jsp < / welcome — file >
< welcome — file > по умолчанию . html < / welcome — file >
< welcome — file > по умолчанию . htm < / welcome — file >
< welcome — file > по умолчанию . jsp < / welcome — file >
< / welcome — file — list >
< сервлет >
< servlet — name > Jersey Web Application < / servlet — name >
< сервлет — класс > ком . солнце. Джерси. spi . контейнер . сервлет. ServletContainer < / servlet — class >
< загрузка — при запуске > 1 < / загрузка — при запуске >
< / servlet >
< сервлет — отображение >
< servlet — name > Jersey Web Application < / servlet — name >
< url — шаблон > / api / * < / url — шаблон >
< / servlet — mapping >
< / web — приложение >
|
Шаг-3 Преобразование проекта в Maven Project
Следуйте этому руководству: https://crunchify.com/how-to-convert-existing-java-project-to-maven-in-eclipse/ . Вот мой файл pom.xml .
|
1
2
3
4
5
6
7
8
9
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
|
< project xmlns = http://maven.apache.org/POM/4.0.0 xmlns : xsi = http://www.w3.org/2001/XMLSchema-instance
xsi : schemaLocation = http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd >
< modelVersion > 4.0.0 < / modelVersion >
< groupId > CrunchifyTutorials < / groupId >
< artifactId > CrunchifyTutorials < / artifactId >
< версия > 0.0.1 — SNAPSHOT < / версия >
< упаковка > война < / упаковка >
< build >
< sourceDirectory > src < / sourceDirectory >
< плагины >
< плагин >
< artifactId > maven — компилятор — плагин < / artifactId >
< версия > 3.1 < / версия >
< конфигурация >
< source > 1.8 < / source >
< target > 1.8 < / target >
< / configuration >
< / plugin >
< плагин >
< artifactId > maven — война — плагин < / artifactId >
< версия > 2.4 < / версия >
< конфигурация >
< warSourceDirectory > WebContent < / warSourceDirectory >
< failOnMissingWebXml > false < / failOnMissingWebXml >
< / configuration >
< / plugin >
< / plugins >
< / build >
< зависимости >
< зависимость >
< groupId > asm < / groupId >
< artifactId > asm — все < / artifactId >
< версия > 3.3.1 < / версия >
< / зависимость >
< зависимость >
< groupId > ком . солнце. Джерси < / groupId >
< artifactId > джерси — комплект < / artifactId >
< версия > 1.14 < / версия >
< / зависимость >
< зависимость >
< groupId > org . JSON идентификатор_группы>
< artifactId > json < / artifactId >
< версия > 20090211 < / версия >
< / зависимость >
< / зависимости >
< / project >
|
Шаг 4
Создать сервис RESTFul: CrunchifyRESTService.java , Здесь мы создадим два сервиса:
/api/crunchifyService— POST call — мы будем использовать это в нашем тесте/api/verify— GET call — просто чтобы убедиться, что сервис успешно запущен
|
1
2
3
4
5
6
7
8
9
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
|
пакет ком . crunchify. учебные пособия ;
/ **
* @author Crunchify.com
*
* /
Импортировать Java. Ио. BufferedReader ;
Импортировать Java. Ио. InputStream ;
Импортировать Java. Ио. InputStreamReader ;
Импортировать javax. печать. приписывать. стандарт . СМИ ;
Импортировать javax. WS. RS. Потребляет ;
Импортировать javax. WS. RS. ПОЛУЧИТЬ ;
Импортировать javax. WS. RS. POST ;
Импортировать javax. WS. RS. Путь ;
Импортировать javax. WS. RS. Производит ;
Импортировать javax. WS. RS. ядро. MediaType ;
Импортировать javax. WS. RS. ядро. Ответ ;
@Path ( / )
общественности учебный класс CrunchifyRESTService {
@СООБЩЕНИЕ
@Path ( / crunchifyService )
@Consumes ( MediaType . APPLICATION_JSON )
общественности Ответ crunchifyREST ( InputStream входящихData ) {
StringBuilder crunchifyBuilder знак равно новый StringBuilder ( ) ;
пытаться {
BufferedReader в знак равно новый BufferedReader ( новый InputStreamReader ( входящихData ) ) ;
строка линия знак равно ноль ;
в то время как ( ( строка знак равно дюйм readLine ( ) ) ! знак равно ноль ) {
crunchifyBuilder . добавить ( строка ) ;
}
} ловить ( Исключение е ) {
Система. вне. println ( «Ошибка анализа: -» ) ;
}
Система. вне. println ( «Полученные данные:» + crunchifyBuilder . toString ( ) ) ;
// возвращаем HTTP-ответ 200 в случае успеха
вернуть Ответ . статус ( 200 ) . Entity ( crunchifyBuilder . toString ( ) ) . build ( ) ;
}
@ПОЛУЧИТЬ
@Path ( / verify )
@Produces ( MediaType . TEXT_PLAIN )
общественности Ответ verifyRESTService (InputStream incomingData) {
строка результат знак равно CrunchifyRESTService успешно запущен .. ;
// возвращаем HTTP-ответ 200 в случае успеха
вернуть Ответ . статус ( 200 ) . сущность ( результат ) . build ( ) ;
}
}
|
Шаг 5
Развернуть проект CrunchifyTutorials на Tomcat. Веб-проект должен быть развернут без каких-либо исключений.
- Щелкните правой кнопкой мыши на
Servers tabв затмении - Нажмите на
Add and Remove...проект - Добавьте Project CrunchifyTutorials справа
Configured:боковая сторона. - Нажмите на
Publish - Нажмите на
Start
Шаг-6 Проверка службы REST
Служба отдыха должна быть доступна по этому адресу: http://127.0.0.1:8080/CrunchifyTutorials/api/verify
Если вы попытаетесь получить доступ к http://127.0.0.1:8080/CrunchifyTutorials/api/crunchifyService, то вы увидите код ошибки 405 - Method not allowed — который является действительным ответом. Как вы можете видеть, это POST-вызов и следует ожидать некоторые данные с запросом.
Давайте двигаться дальше.
Шаг 7
Скопируйте ниже содержание JSON и поместите его под C:\CrunchifyJSON.txt файл для windows или /Users/ файл, если MacBook.
|
1
2
3
4
5
6
7
|
{
учебники : {
id : Хруст ,
тема : REST Service ,
описание : Msgstr Это пример сервиса REST от Crunchify.
}
}
|
Шаг 8
Создать REST Call Client: CrunchifyRESTServiceClient.java.
пожалуйста change path to CrunchifyJSON.txt в программе ниже.
|
1
2
3
4
5
6
7
8
9
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
|
пакет ком . crunchify. учебные пособия ;
Импортировать Java. Ио. BufferedReader ;
Импортировать Java. Ио. FileInputStream ;
Импортировать Java. Ио. InputStream ;
Импортировать Java. Ио. InputStreamReader ;
Импортировать Java. Ио. OutputStreamWriter ;
Импортировать Java. нетто. URL ;
Импортировать Java. нетто. URLConnection ;
Импортировать орг. JSON . JSONObject ;
/ **
* @author Crunchify.com
*
* /
общественности учебный класс CrunchifyRESTServiceClient {
общественности статический недействительным main ( Строка [ ] аргументы ) {
строка строка знак равно ;
пытаться {
// Step1: давайте сначала прочитаем файл из fileSystem
// Изменить путь CrunchifyJSON.txt здесь
InputStream crunchifyInputStream знак равно новый FileInputStream ( /Users/
InputStreamReader crunchifyReader знак равно новый InputStreamReader ( crunchifyInputStream ) ;
BufferedReader br знак равно новый BufferedReader ( crunchifyReader ) ;
строка линия ;
в то время как ( ( строка знак равно бр . readLine ( ) ) ! знак равно ноль ) {
строка + = линия + / n ;
}
JSONObject jsonObject знак равно новый JSONObject ( строка ) ;
Система. вне. println ( jsonObject ) ;
// Step2: теперь передаем данные файла JSON службе REST
пытаться {
URL URL знак равно новый URL ( http: // localhost: 8080 / CrunchifyTutorials / api / crunchifyService ) ;
подключение URLConnection знак равно URL — адрес. openConnection ( ) ;
подключение. setDoOutput ( true ) ;
подключение. setRequestProperty ( Content-Type , application / json ) ;
подключение. setConnectTimeout ( 5000 ) ;
подключение. setReadTimeout ( 5000 ) ;
OutputStreamWriter out знак равно новый OutputStreamWriter ( connection . GetOutputStream ( ) ) ;
вне. запись ( jsonObject . toString ( ) ) ;
вне. закрыть ( ) ;
BufferedReader в знак равно новый BufferedReader ( новый InputStreamReader ( connection . GetInputStream ( ) ) ) ;
в то время как ( в . readLine ( ) ! знак равно ноль ) {
}
Система. вне. println ( / nCrunchify REST Service успешно запущен .. ) ;
дюйм закрыть ( ) ;
} ловить ( Исключение е ) {
Система. вне. println ( / nError при вызове Crunchify REST Service ) ;
Система. вне. println ( e ) ;
}
бр . закрыть ( ) ;
} ловить ( Исключение е ) {
эл . printStackTrace ( ) ;
}
}
}
|
Шаг 9
Теперь давайте запустим клиентскую программу, щелкнув правой кнопкой мыши на CrunchifyRESTServiceClient.java, и вы увидите ниже два результата
1) в консоли Tomcat
2) в локальной клиентской консоли
0.00 (0%) 0 votes















