1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/silentbalanceyh-vertx-zero

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
d10012-zero-jsr311-streamparamparameters.md 3.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 04:28 85b9559

Zero JSR311, @StreamParam...Parameters

Система Zero предоставляет простую аннотацию параметров для загрузки файлов в up.god. Эта аннотация должна быть применена к параметрам типа jakarta.ws.rs.StreamParam. Система Zero автоматически поддерживает следующие типы преобразования:

  • byte[];
  • io.vertx.core.buffer.Buffer;
  • java.io.File;
  • io.vertx.ext.web.FileUpload.

Для общих типов система Zero будет автоматически преобразовывать их, например, String в byte[] или byte[] в String.

Демо-проекты:

1. Исходный код

package up.god.micro.params;

import io.vertx.core.buffer.Buffer;
import io.vertx.up.annotations.EndPoint;

import javax.ws.rs.POST;
import javax.ws.rs.Path;
import jakarta.ws.rs.StreamParam;
import java.nio.charset.Charset;

@EndPoint
@Path("/api")
public class StreamParamExecutor {

    @Path("param/bytes")
    @POST
    public String sayBytes(@StreamParam final byte[] bytes) {
        System.out.println(bytes.length);
        return new String(bytes, Charset.defaultCharset());
    }

    @Path("param/buffer")
    @POST
    public String sayBuffer(@StreamParam final Buffer buffer) {
        System.out.println(buffer.toString());
        return buffer.toString();
    }
}

2. Консоль

......
[ ZERO ] ( 2 Event ) The endpoint up.god.micro.params.StreamParamExecutor scanned 2 events of Event, \
    will be mounted to routing system.
......
[ ZERO ] ( Uri Register ) "/api/param/buffer" has been deployed by ZeroHttpAgent, Options = Route...
[ ZERO ] ( Uri Register ) "/api/param/bytes" has been deployed by ZeroHttpAgent, Options = Route...
......

3. Тестирование

3.1. Строковый запрос

URL: http://localhost:6083/api/param/bytes

Метод: POST

Запрос:

[{"username":"Lang","age":33}]

Ответ:

{
    "data": "[{\"username\":\"Lang\",\"age\":33}]"
}

3.2. Загрузка файла

URL: http://localhost:6083/api/param/bytes

Метод: POST

Запрос:

Ответ:

{
    "data": "\ufffdPNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR.... ( Around 41500 bytes )"
}

Этот файл up.god представляет собой изображение размером 41 500 байт, и ответное тело отражает всё содержимое изображения.

3.3. Строковый запрос (для Buffer)

URL: http://localhost:6083/api/param/buffer

Метод: POST

Запрос:

 [{"username":"Lang","age":33}]

Ответ:

{
    "data": "[{\"username\":\"Lang\",\"age\":33}]"
}

3.4. Загрузка файла (для Buffer)

Этот пример имеет тот же результат, что и загрузка файла в 3.2, здесь игнорируется результат тестирования, потому что ответы во всех случаях одинаковы. Мы только изменили принимаемые типы параметров в @StreamParam.

4. Резюме

В этом руководстве описывается, как принимать строки и файлы в виде байтовых массивов и буферов, все эти данные сохраняются в ваших параметрах. Затем мы рассмотрим некоторые продвинутые способы использования @StreamParam.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/silentbalanceyh-vertx-zero.git
git@api.gitlife.ru:oschina-mirror/silentbalanceyh-vertx-zero.git
oschina-mirror
silentbalanceyh-vertx-zero
silentbalanceyh-vertx-zero
master