Spring Framework. Simple REST Service
(21 intermediate revisions by one user not shown) | |||
Line 27: | Line 27: | ||
</pre> | </pre> | ||
− | Структура | + | |
+ | Структура проекта: | ||
[[File:SimpleRestService.png]] | [[File:SimpleRestService.png]] | ||
− | 2. Добавляем папки '''webapp''', '''WEB-INF''' и | + | 2. Добавляем папки '''webapp''', '''WEB-INF''' и файл '''app-servlet.xml''' (конфигурация контекста приложения): |
[[File:SimpleRestService1.png]] | [[File:SimpleRestService1.png]] | ||
− | + | Содержимое '''app-servlet.xml''': | |
<source lang="xml"> | <source lang="xml"> | ||
Line 51: | Line 52: | ||
− | + | 3. В файле '''pom.xml''' (конфигурация сборки проекта) указываем, что web-приложение будет запаковано в Web Application Archive ('''war'''), и добавляем зависимость на '''spring-webmvc''': | |
<source lang="xml"> | <source lang="xml"> | ||
Line 79: | Line 80: | ||
</project> | </project> | ||
</source> | </source> | ||
+ | |||
+ | |||
+ | 4. В папку '''java''' добавляем пакет '''org.asistech.web.srs.api''', и создаем в нем класс '''TestRS.java''' (REST-сервис): | ||
+ | |||
+ | [[File:SimpleRestService2.png]] | ||
+ | |||
+ | |||
+ | Содержимое '''TestRS.java''': | ||
+ | |||
+ | <source lang="java"> | ||
+ | package org.asistech.web.srs.api; | ||
+ | |||
+ | import org.springframework.web.bind.annotation.RequestMapping; | ||
+ | import org.springframework.web.bind.annotation.RequestMethod; | ||
+ | import org.springframework.web.bind.annotation.ResponseBody; | ||
+ | import org.springframework.web.bind.annotation.RestController; | ||
+ | |||
+ | @RestController | ||
+ | @RequestMapping("/api/test") | ||
+ | public class TestRS { | ||
+ | |||
+ | @RequestMapping(value = "/helloworld", method = RequestMethod.GET) | ||
+ | @ResponseBody | ||
+ | public String getHelloWorld() { | ||
+ | return "Hello, world!"; | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | |||
+ | 5. Добавляем в контекст '''app-servlet.xml''' новый '''bean''': | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <beans xmlns="http://www.springframework.org/schema/beans" | ||
+ | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
+ | xsi:schemaLocation=" | ||
+ | http://www.springframework.org/schema/beans | ||
+ | http://www.springframework.org/schema/beans/spring-beans.xsd"> | ||
+ | |||
+ | <bean name="TestRS" class="org.asistech.web.srs.api.TestRS"/> | ||
+ | |||
+ | </beans> | ||
+ | </source> | ||
+ | |||
+ | |||
+ | 6. В папку '''WEB-INF''' добавляем файл '''web.xml''' (deployment descriptor): | ||
+ | |||
+ | [[File:SimpleRestService3.png]] | ||
+ | |||
+ | |||
+ | Содержимое '''web.xml''': | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5"> | ||
+ | |||
+ | <servlet> | ||
+ | <servlet-name>app</servlet-name> | ||
+ | <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> | ||
+ | <load-on-startup>1</load-on-startup> | ||
+ | </servlet> | ||
+ | |||
+ | <servlet-mapping> | ||
+ | <servlet-name>app</servlet-name> | ||
+ | <url-pattern>/*</url-pattern> | ||
+ | </servlet-mapping> | ||
+ | |||
+ | </web-app> | ||
+ | </source> | ||
+ | |||
+ | |||
+ | 7. Выполняем сборку проекта: | ||
+ | <pre> | ||
+ | cd ~/projects/web/SimpleRestService/ | ||
+ | |||
+ | mvn clean install | ||
+ | |||
+ | ... | ||
+ | [INFO] BUILD SUCCESS | ||
+ | [INFO] ------------------------------------------------------------------------ | ||
+ | [INFO] Total time: 1.516s | ||
+ | [INFO] Finished at: Sat Mar 25 20:38:47 MSK 2021 | ||
+ | [INFO] Final Memory: 19M/981M | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | ==Тестирование приложения== | ||
+ | |||
+ | Для тестирования REST-сервиса используем web-сервер [[Mac OS X. Jetty|Jetty]] | ||
+ | |||
+ | 1. Переходим в папку '''target''': | ||
+ | |||
+ | cd ~/projects/web/SimpleRestService/target/ | ||
+ | |||
+ | 2. Копируем собранное приложение в папку '''webapps''' jetty: | ||
+ | |||
+ | cp SimpleRestService-1.0.war ~/app/jetty-9.3.8/webapps/ | ||
+ | |||
+ | 3. Переходим в корневую папку jetty: | ||
+ | |||
+ | cd ~/app/jetty-9.3.8/ | ||
+ | |||
+ | 4. Запускаем jetty: | ||
+ | |||
+ | java -jar start.jar | ||
+ | |||
+ | 5. Вызываем REST-сервис: | ||
+ | |||
+ | http://localhost:8080/SimpleRestService-1.0/api/test/helloworld | ||
+ | |||
+ | В окне браузера получаем ответ: | ||
+ | |||
+ | Hello, world! | ||
Latest revision as of 10:18, 27 March 2016
[edit] Simple REST Service
1. Создаем Maven-проект в IntelliJ IDEA:
File / New / Project... Maven Project SDK: 1.8 [Next] GroupId: org.asistech.web.srs ArtifactId: SimpleRestService Version: 1.0 [Next] Project name: SimpleRestService Project location: ~/projects/web/SimpleRestService [Finish]
Структура проекта:
2. Добавляем папки webapp, WEB-INF и файл app-servlet.xml (конфигурация контекста приложения):
Содержимое app-servlet.xml:
1 2 3 4 5 6 7 8 | <? xml version = "1.0" encoding = "UTF-8" ?> xsi:schemaLocation=" </ beans > |
3. В файле pom.xml (конфигурация сборки проекта) указываем, что web-приложение будет запаковано в Web Application Archive (war), и добавляем зависимость на spring-webmvc:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <? xml version = "1.0" encoding = "UTF-8" ?> xsi:schemaLocation=" < modelVersion >4.0.0</ modelVersion > < groupId >org.asistech.web.srs</ groupId > < artifactId >SimpleRestService</ artifactId > < version >1.0</ version > < packaging >war</ packaging > < dependencies > < dependency > < groupId >org.springframework</ groupId > < artifactId >spring-webmvc</ artifactId > < version >4.2.5.RELEASE</ version > </ dependency > </ dependencies > </ project > |
4. В папку java добавляем пакет org.asistech.web.srs.api, и создаем в нем класс TestRS.java (REST-сервис):
Содержимое TestRS.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | package org.asistech.web.srs.api; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping ( "/api/test" ) public class TestRS { @RequestMapping (value = "/helloworld" , method = RequestMethod.GET) @ResponseBody public String getHelloWorld() { return "Hello, world!" ; } } |
5. Добавляем в контекст app-servlet.xml новый bean:
1 2 3 4 5 6 7 8 9 10 | <? xml version = "1.0" encoding = "UTF-8" ?> xsi:schemaLocation=" < bean name = "TestRS" class = "org.asistech.web.srs.api.TestRS" /> </ beans > |
6. В папку WEB-INF добавляем файл web.xml (deployment descriptor):
Содержимое web.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <? xml version = "1.0" encoding = "UTF-8" ?> < servlet > < servlet-name >app</ servlet-name > < servlet-class >org.springframework.web.servlet.DispatcherServlet</ servlet-class > < load-on-startup >1</ load-on-startup > </ servlet > < servlet-mapping > < servlet-name >app</ servlet-name > < url-pattern >/*</ url-pattern > </ servlet-mapping > </ web-app > |
7. Выполняем сборку проекта:
cd ~/projects/web/SimpleRestService/ mvn clean install ... [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.516s [INFO] Finished at: Sat Mar 25 20:38:47 MSK 2021 [INFO] Final Memory: 19M/981M
[edit] Тестирование приложения
Для тестирования REST-сервиса используем web-сервер Jetty
1. Переходим в папку target:
cd ~/projects/web/SimpleRestService/target/
2. Копируем собранное приложение в папку webapps jetty:
cp SimpleRestService-1.0.war ~/app/jetty-9.3.8/webapps/
3. Переходим в корневую папку jetty:
cd ~/app/jetty-9.3.8/
4. Запускаем jetty:
java -jar start.jar
5. Вызываем REST-сервис:
http://localhost:8080/SimpleRestService-1.0/api/test/helloworld
В окне браузера получаем ответ:
Hello, world!