Статьи
Утилиты Telegram YouTube Отзывы

Статьи с тэгом «json»

Загрузка файлов в restful-сервисе на Spring Boot

30 ноября 2021

Тэги: json, yaml, файлы, Spring Boot, rest, Kotlin, YouTube.

Предположим, перед нами стоит задача сделать в restful-сервисе, написанном на Kotlin и Spring Boot, эндпоинт для загрузки файлов с фронтэнда. Для пользователя такая загрузка выглядит как кнопка выбора файла с надписью «Обзор». Далее выбранный файл отправляется на бэк как поток бинарных данных. Этот поток имеет тип данных multipart/form-data.

Данный материал также доступен в формате видео на YouTube.

Эндпоинт

Для реализации эндпоинта в минимальном варианте в нашем проекте должна быть всего одна зависимость spring-boot-starter-web. Заготовку проекта на Kotlin можно сгенерить с помощью Spring Initializr.

Сам контроллер будет выглядеть примерно так:

Читать полностью...

Сравнение форматов конфига в Spring Boot

16 февраля 2020

Тэги: Spring Boot, Java, Collections, Spring, XML, json, yaml.

Spring Boot позволяет хранить настройки приложения в файле и получать к ним доступ в декларативном стиле. Этот файл может иметь один из трёх форматов: properties, xml и yaml. Как Spring будет интерпретировать формат файла, определяется его расширением. Далее мы рассмотрим плюсы и минусы каждого формата. В качестве примера предположим, что в конфиге мы храним число, текстовую строку на русском языке и список значений.

properties-файл

По умолчанию в Spring используется properties-конфиг. Имя файла должно начинаться со слова application и иметь расширение properties. Если вы не используете профили для разделения конфигов, то достаточно иметь файл application.properties.

# числовой параметр
some.test.numberValue=42
# текстовый параметр
some.test.textValue="Текстовый параметр из properties-файла"
# список значений
some.test.list[0]=one
some.test.list[1]=two
some.test.list[2]=three

В данном формате комментарии всегда начинаются с новой строки и с символа «#». Имя каждого параметра прописывается полностью (и это один из недостатков данного формата), затем идёт «=», затем само значение. Текстовые значения можно указывать как в кавычках, так и без них. Список значений, который в нашем приложении превратится в объект типа List, в конце имени каждого значения имеет индекс в квадратных скобках. Такой синтаксис похож на объявление массива.

Читать полностью...

Spring Boot: преобразование объекта в json

26 января 2020

Тэги: Spring Boot, rest, json, Java.

Spring Boot значительно упрощает преобразование объекта в json. Предположим, у нас есть такой класс, содержащий какую-то информацию о пользователе:

public class User {
    private String firstName;
    private String lastName;
    private int age;

   // далее идут get- и set-методы для указанных полей...
}

Создадим контроллер, который будет его возвращать.

@RestController
public class JsonController {

    @GetMapping
    public User getUser() {
        var user = new User();
        user.setFirstName("Сигизмунд");
        user.setLastName("Петров");
        user.setAge(23);
        return user;
    }
}

Этих двух классов достаточно, чтобы вы уже могли получать информацию о пользователе в формате json! Выполнив GET-запрос к вашему приложению (по умолчанию http://127.0.0.1:8080/), вы получите такой json:

Читать полностью...

Валидация бинов в Spring

28 апреля 2019

Тэги: Java, Spring, json.

Spring позволяет проверять формат данных в бинах в декларативном стиле при помощи специальных аннотаций из пакета javax.validation.

Предположим, у нас есть rest-контроллер, в который мы хотим добавить метод, создающий пользователя. Очевидно, что это будет POST-запрос:

@PostMapping("/users")
public String createUser(@Valid @RequestBody CreateUserRequest request) {
    // создание пользователя в БД
    return "Success";
}

На вход метод принимает бин CreateUserRequest, который мы будем передавать в формате json. Этот параметр метода снабжён аннотациями @RequestBody (говорит, что параметр будет именно в теле запроса) и @Valid (аннотация, которая активирует механизм валидации для данного бина). Обратите внимание, что если не указать аннотацию @Valid, то валидация работать не будет.

Читать полностью...

❮ Назад