Полное название REST — Representational State Transfer, что в переводе с китайского означает «передача репрезентативного состояния». RESTful — это набор рекомендаций и ограничений, касающихся существующих характеристик Интернета и того, как он используется. На основе Spring MVC RestController мы можем легко создать приложение RESTful.
Создайте проект с Maven
мы можем напрямую использоватьIntelliJ IDEA(рекомендуется) вSpring initializerБыстро создатьSpring Bootпроект, используемый здесьMavenпостроить,pom.xml
Файлы следующие:
<?xml version="1.0" encoding="UTF-8"?>
<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>org.springframework</groupId>
<artifactId>gs-rest-service</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<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>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
</project>
Spring Maven plugin
Это набор плагинов, разработанных Spring для Maven, который содержит несколько мощных функций:
- Нет необходимости в сложной конфигурацииСтройте быстроИсполняемый пакет jar, который позволяет приложению работать практически независимо от среды.
- Автоматический поиск
public static void main()
метод и пометить его класс какстартовый класс - Автоматическое управление зависимостями Spring Boot, все зависимые версии проекта согласуются с родительским проектом Spring Boot (по умолчанию), разумеется, другие версии также можно указать вручную
Spring также поддерживаетGradle
Сборка, пожалуйста, обратитесь к подробной конфигурацииBuild with Gradle
Создать класс сущности
Класс сущности здесь неORMКласс сущности в REST, но «ресурс» в REST, функция, которую хочет реализовать наш веб-сервис, состоит в том, чтобы обрабатывать URL-адрес как/userinfo/1
изGET
запросить и вернуть результатJSONВозвращается в виде тела ответа, код состояния ответа200 OK
, формат JSON следующий:
{
"id": 1,
"name": "张三"
}
Этот пример просто имитирует получение информации о пользователе с идентификатором 1. Сначала создайте класс POJO.User
:
public class User {
private final long id;
private final String name;
public User(long id, String name) {
this.id = id;
this.name = name;
}
public long getId() {
return id;
}
public String getName() {
return name;
}
}
Spring 默认使用 `Jackson` 作为 JSON 解析库将 POJO 类对象序列化为 JSON。
Создать контроллер
Добавить в класс контроллера@RestController
Аннотацию можно использовать для сериализации возвращаемого значения в JSON и возврата его в виде тела ответа.content-type
заapplication/json
,просить/user/1
Получит информацию о пользователе с идентификатором 1, это класс контроллера:
@RestController
public class GreetingController {
private static final String template = "张三";
private final long id = 1;
@RequestMapping("/user/{id}")
public User userInfo(@PathVariable("id")long id) {
return new User(id, template);
}
}
заставить приложение работать
Традиционный способ сборки — генерировать war-файл, а затем развертывать его на веб-сервере, что иногда неудобно, поэтому рекомендуется использовать плагин Spring Boot Maven для быстрой генерации независимого исполняемого jar-файла с помощьюjava -jar
Команда может запустить приложение, все классы и ресурсы и другие файлы интегрированы в этот файл jar, который также включает в себявстроенныйконтейнер сервлетов (например, Tomcat), следующий класс запуска для этого приложения:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@SpringBootApplication
Эта аннотация представляет собой составную аннотацию, которая включает:
-
@Configuration
: объявляет, что этот класс является классом конфигурации для bean-компонентов в контексте -
@EnableAutoConfiguration
: заставляет Spring сканировать соответствующие классы конфигурации bean-компонентов или классы свойств в контексте и помещать эти bean-компоненты в контекст приложения. - Когда Spring обнаружит, что существует зависимость от spring-webmvc в пути к классам, он автоматически добавит ее в класс запуска приложения.
@EnableWebMvc
, что указывает на то, что приложение является веб-приложением, и связанные с Интернетом операции, такие как создание экземпляров, будут выполняться при запуске приложения.DispatcherServlet
класс и настроить его -
@ComponentScan
: заставить Spring сканировать все настройкиКлассы компонентов, классы конфигурации, бизнес-классы и контроллеры, и собрать его
в стартовом классеmain
вызов методаSpringBootApplication.run()
Запуск приложения может быть реализован, а конфигурация традиционного веб-приложения Java сложна.web.xmlФайлы совершенно разные и не нужно тратить слишком много времени на настройку
Построить исполняемый jar
Мы можем упаковать приложение в банку с помощью простой команды:
$ ./mvnw clean package
Выполните эту команду, чтобы запустить приложение:
$ java -jar target/gs-rest-service-0.1.0.jar
сделать несколько простых тестов
Доступ в браузереhtpp://localhost:8080/user/1
, если проблем нет, вы получите следующий ответ:
{
"id": 1,
"name": "张三"
}
Суммировать
Это просто веб-служба RESTful, для получения дополнительной документации посетите:Building a RESTful Web Service
Личный блог обновляется синхронно.Блог Паулы Ченг