Вступление:
REST расшифровывается как Передача представительского состояния и является архитектурным руководством для проектирования API. Мы предполагаем, что у вас уже есть опыт создания API RESTful.
В этом руководстве мы разработаем простое веб-приложение Spring Boot RESTful, в котором будут представлены несколько конечных точек REST.
Настройка проекта:

Начнем с загрузки шаблона проекта через Spring Initializr:
Нам нужно только добавить Spring Web в качестве дополнительной начальной зависимости для веб-приложений RESTful. Мы добавили два других, предполагая, что мы также взаимодействуем с базой данных.
POM файл:
Наш POM- файл теперь будет иметь все необходимые зависимости веб-приложения и базы данных:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope></dependency> |
Контроллер REST:
Давайте теперь определим наш контроллер REST:
|
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
|
@RestController@RequestMapping("/student")public class StudentController { @Autowired private StudentService studentService; @GetMapping("/all") public ResponseEntity<List<Student>> getAllStudents() { return new ResponseEntity<List<Student>>(studentService.getAllStudents() , HttpStatus.OK); } @GetMapping("/{id}") public ResponseEntity<Student> getStudentById(@PathVariable("id") Integer id) { Optional<Student> student = studentService.getById(id); if(student.isPresent()) return new ResponseEntity<Student>(student.get(), HttpStatus.OK); else throw new ResponseStatusException(HttpStatus.NOT_FOUND , "No student found!"); } @PostMapping("/") public ResponseEntity<Student> createStudent(@RequestBody Student student) { Student newStudent = studentService.store(student); return new ResponseEntity<Student>(newStudent, HttpStatus.CREATED); } ...} |
Мы можем определить все наши отображения GET, POST, DELETE или PUT в нашем контроллере.
Обслуживание:
Здесь StudentService — это класс, взаимодействующий с базой данных и выполняющий за нас все операции:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
@Servicepublic class StudentService { @Autowired private StudentRepository repo; public Student store(Student student) { return repo.save(student); } public List<Student> getAllStudents() { return repo.findAll(); } ... } |
У нас есть еще одно руководство, объясняющее, как настроить базу данных H2 с помощью Spring Boot.
Запуск приложения:
Наконец, мы можем запустить наш класс UniversityApplication :
|
1
2
3
4
5
6
7
|
@SpringBootApplicationpublic class UniversityApplication { public static void main(String[] args) { SpringApplication.run(UniversityApplication.class, args); }} |
С помощью которого наши конечные точки REST будут отображаться на встроенном сервере.
Тестирование конечных точек REST:
Давайте используем cURL для проверки нашей конечной точки REST:
|
1
|
$ curl http://localhost:8080/student/all |
Это вернет все записи о студентах, присутствующие в нашей базе данных:
|
1
|
[{1, "James"}, {2, "Selena"}, {3, "John"}] |
Аналогично имеем:
|
1
2
|
$ curl http://localhost:8080/student/1{1, "James"} |
Мы также можем использовать инструмент POSTman для проверки наших конечных точек. У него отличный пользовательский интерфейс.
Вывод:
В этом руководстве мы с нуля создали приложение Spring Boot RESTful. Мы представили несколько API, а затем протестировали их с помощью cURL.
|
Опубликовано на Java Code Geeks с разрешения Шубхры Шриваставы, партнера нашей программы JCG . См. Оригинальную статью здесь: Spring Boot: создание веб-приложения RESTful. Мнения, высказанные участниками Java Code Geeks, являются их собственными. |