Статьи

Создание службы RESTFul с использованием Spring Boot

Все говорят о таких микросервисах, как WSO2 Microservice Framework , Spring Boot и т. Д. Поскольку я не работал над проектом, связанным с Spring, очень давно, я подумал о реализации простого сервиса RESTFul с использованием Spring Boot.

Итак, я начал с документации Spring. Это просто. Вы можете создать структуру своего проекта, используя « Spring Initializr ». Это онлайн-инструмент, в который вы можете добавить все нужные зависимости в POM-файл вашего проекта. Так как я большой поклонник Maven, я создаю проект Maven.

В пользовательском интерфейсе Spring Initializr вы можете выбрать язык, версию начальной загрузки Spring, идентификатор группы проекта, имя артефакта и т. Д. Пожалуйста, обратитесь к снимку экрана ниже, чтобы получить информацию, которую я предоставил при создании проекта.

При нажатии на «Создать проект» он загрузит заархивированный maven проект на ваш компьютер. Разархивируйте его и импортируйте в IDE. Начальная структура проекта, как показано ниже.

В моей реализации сервиса HelloWorld REST он принимает имя пользователя в качестве параметра пути (или параметра URL) и возвращает приветствие JSON (ответ). Поэтому я ожидаю вызвать мою службу REST, позвонив по следующему URL: APP_NAME / api / hello / chandana.

@RestController — это способ реализации сервиса RESTFul с использованием Spring. Итак, этот новый класс контроллера будет называться HelloWorldController. Так что мой класс HelloWorldController выглядит следующим образом.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.chandana.helloworld;
 
import com.chandana.helloworld.bean.Greeting;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@RequestMapping("/api")
public class HelloWorldController {
 
    @RequestMapping("/")
    public String welcome() {//Welcome page, non-rest
        return "Welcome to RestTemplate Example.";
    }
 
    @RequestMapping("/hello/{name}")
    public Greeting message(@PathVariable String name) {
 
        Greeting  msg = new Greeting(name, "Hello " + name);
        return msg;
    }
 
}

Примечание. Если вы заметили, что Spring Boot 1.5.6 неправильно импортирует классы и отображает сообщение об ошибке «Не удается разрешить символ RestController» в вашей среде IDE, необходимо понизить версию Spring, которая используется в проекте. Spring Boot 1.5.6 по умолчанию использует зависимость Spring 4.3.10.RELEASE, и ее необходимо снизить до 4.3.9.RELEASE. Поэтому добавьте <spring.version> 4.3.9.RELEASE </spring.version> в раздел свойств вашего файла POM.

Так что все на месте. Я могу собрать и запустить проект Spring Boot, используя команду ниже maven. Он скомпилирует проект и запустит его.

mvn spring-boot: беги

При запуске сервера вы можете увидеть зарегистрированный URL-адрес службы REST в консоли, как показано ниже

ИНФОРМАЦИЯ 9556 — [main] swsmmaRequestMappingHandlerMapping: сопоставлено « {[/ api / hello / {name}]} » с общедоступным com.chandana.helloworld.bean.Greeting com.chandana.helloworld. HelloWorldController . сообщение (java.lang.String)

ИНФОРМАЦИЯ 9556 — [main] swsmmaRequestMappingHandlerMapping: сопоставлено « {[/ api /]} » с общедоступным java.lang.String com.chandana.helloworld. HelloWorldController . добро пожаловать () 2017-0

Наконец, можно вызвать службу REST, открыв этот URL: http: // localhost: 8080 / api / hello / NAME

Окончательная структура проекта:

Приветственный класс POJO:

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
package com.chandana.helloworld.bean;
 
public class Greeting {
 
    private String player;
    private String message;
 
    public Greeting(String player, String message) {
        this.player = player;
        this.message = message;
    }
 
    public String getPlayer() {
        return player;
    }
 
    public void setPlayer(String player) {
        this.player = player;
    }
 
    public String getMessage() {
        return message;
    }
 
    public void setMessage(String message) {
        this.message = message;
    }
}

POM XML:

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
<?xml version="1.0" encoding="UTF-8"?>
 <modelVersion>4.0.0</modelVersion>
 
 <groupId>com.chandana</groupId>
 <artifactId>helloworld</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>
 
 <name>helloworld</name>
 <description>Demo project for Spring Boot</description>
 
 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.5.6.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
 </parent>
 
 <properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  <java.version>1.8</java.version>
  <spring.version>4.3.9.RELEASE</spring.version>
 </properties>
 
 <dependencies>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
 
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
  </dependency>
 </dependencies>
 
 <build>
  <plugins>
   <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
   </plugin>
  </plugins>
 </build>
 
 
</project>

Класс HelloWorldController:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.chandana.helloworld;
 
import com.chandana.helloworld.bean.Greeting;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@RequestMapping("/api")
public class HelloWorldController {
 
    @RequestMapping("/")
    public String welcome() {//Welcome page, non-rest
        return "Welcome to RestTemplate Example.";
    }
 
    @RequestMapping("/hello/{name}")
    public Greeting message(@PathVariable String name) {
 
        Greeting  msg = new Greeting(name, "Hello " + name);
        return msg;
    }
 
}

Вывод

Как представляется, реализовать сервисы RESTFul с помощью Spring Boot очень просто. Поэтому у меня появилась идея реализовать бэкэнд моего приложения « Yield Price Sri Lanka » с помощью Spring Boot. Кроме того, в надежде реализовать интерфейс администратора для управления информацией о ценах и товарах, а также общедоступный веб-интерфейс для отображения информации о цене для пользователей, у которых нет приложения для Android. Оставайся на связи.