Краткое руководство по разработке Quick Server
@Get
, @Post
, @Put
, @Delete
и @Variable
помогают в разработке RESTful API.@EnableCros
позволяет использовать API с кросс-доменными запросами. Может применяться к методам, контроллерам и классам запуска.@Scanning
указывает на все классы контроллеров. Может использоваться только в классе запуска.@ResponseType
определяет тип данных ответа. Может использоваться только для методов.@View
определяет способ представления ответа. Может использоваться только для методов.org.json.JSONObject
, HttpRequest
, HttpResponse
, WebContext
, BodyBinary
, а также любые другие объекты, хранящиеся в контексте контейнера. Также можно использовать аннотации для маркировки параметров в методе. Например, параметры, помеченные аннотацией @Variable
, будут внедрены в соответствующие переменные пути запроса.@ResponseType
. По умолчанию используется application/json
, и ожидается, что возвращаемое значение будет объектом JSONObject
. Тип возвращаемого значения может быть void
, в этом случае необходимо указать данные ответа в параметре HttpResponse
.@View
, отвечают представлением. Возвращаемое значение используется как имя файла, а значение аннотации @View
— как корневая папка представления.Пример контроллера:
@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();
});
}
}
Интерфейс net.apisp.quick.core.ContextEnhcancer
предназначен для выполнения некоторых пользовательских подготовительных работ после сохранения всех необходимых объектов в кэше системы. Вы можете реализовать свои собственные подготовительные работы, и система автоматически просканирует и выполнит их.
(Текст продолжается...)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )