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

OSCHINA-MIRROR/plain-org-QuickServer

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
MANUAL.md 5.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 22:44 ad602c0

Краткое руководство по разработке Quick Server

1. Введение

1. Преимущества аннотаций для разработки RESTful API

  1. Аннотации @Get, @Post, @Put, @Delete и @Variable помогают в разработке RESTful API.
  2. Аннотация @EnableCros позволяет использовать API с кросс-доменными запросами. Может применяться к методам, контроллерам и классам запуска.
  3. Аннотация @Scanning указывает на все классы контроллеров. Может использоваться только в классе запуска.
  4. Аннотация @ResponseType определяет тип данных ответа. Может использоваться только для методов.
  5. Аннотация @View определяет способ представления ответа. Может использоваться только для методов.

2. О методах сопоставления

  1. Параметры могут быть динамически внедрены по мере необходимости. Можно добавить следующие типы параметров: org.json.JSONObject, HttpRequest, HttpResponse, WebContext, BodyBinary, а также любые другие объекты, хранящиеся в контексте контейнера. Также можно использовать аннотации для маркировки параметров в методе. Например, параметры, помеченные аннотацией @Variable, будут внедрены в соответствующие переменные пути запроса.
  2. Возвращаемое значение является содержимым ответа. Тип содержимого ответа может быть указан с помощью аннотации @ResponseType. По умолчанию используется application/json, и ожидается, что возвращаемое значение будет объектом JSONObject. Тип возвращаемого значения может быть void, в этом случае необходимо указать данные ответа в параметре HttpResponse.
  3. Методы, помеченные аннотацией @View, отвечают представлением. Возвращаемое значение используется как имя файла, а значение аннотации @View — как корневая папка представления.

3. Пример

Пример контроллера:

@Controller
@EnableCors // Этот класс предоставляет API, поддерживающие кросс-доменные запросы
public class DemoAPI {

    @Autowired("charset") // Чтение конфигурации из контекста и внедрение
    private String charset;

    @Get("/") @View
    public String index(Map<String, Object> model){
        model.put("title", "Index");
        return "index.html";
    }

    @Post("/data")
    public JSONObject getData(JSONObject body) {
        return body;
    }

    @Get("/application/{name}")
    public JSONObject application(@Variable("name") String name, WebContext ctx, HttpRequest req,
            HttpResponse resp, BodyBinary body) {
        JSONObject obj = new JSONObject();
        obj.put("cookie", req.header("Cookie"));
        HttpCookie session = req.cookie("sessionid");
        if (Objects.isNull(session)) {
            resp.cookie("sessionid", Strings.uuid());
        } else {
            obj.put("sessionid", session.value());
        }
        obj.put("assertTrue", req.body() == body);
        obj.put("server.port", ctx.setting("server.port"));
        obj.put("server.charset", charset);
        obj.put("name", name);
        return obj;
    }
}

Класс запуска:

public class DemoProgram {
    public static final void main(String[] args) {
        QuickContext ctx = Quick.boot(args);
        // Также можно использовать этот метод для быстрого сопоставления тела выполнения
        ctx.mapping("/fast-{server}", req -> new JSONObject().put("fast", req.variable("server")));
    }
}

Таким образом, четыре интерфейса бэкенда уже готовы. QuickServer поддерживает ответы в формате Content-Type: application/stream+json.

public class DemoProgram {
    public static final void main(String[] args) {
        Quick.boot(args).mapping("GET /flow/{count}", (req) -> {
            for (int i = 0; i < req.variable("count", Integer.class) - 1; i++) {
                HttpFlow.response().append("Hello World ".getBytes());
                TimeUnit.SECONDS.sleep(2);
            }
            HttpFlow.response().append("last Hello World".getBytes()).over();
        });
    }
}

2. Конкретные разделы

1. Ядро

Некоторые особенности

Интерфейс net.apisp.quick.core.ContextEnhcancer предназначен для выполнения некоторых пользовательских подготовительных работ после сохранения всех необходимых объектов в кэше системы. Вы можете реализовать свои собственные подготовительные работы, и система автоматически просканирует и выполнит их.

(Текст продолжается...)

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

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

1
https://api.gitlife.ru/oschina-mirror/plain-org-QuickServer.git
git@api.gitlife.ru:oschina-mirror/plain-org-QuickServer.git
oschina-mirror
plain-org-QuickServer
plain-org-QuickServer
master