ditty — это минималистичный веб-фреймворк RESTful, реализованный с использованием netty и fastjson.
/**
* Класс для регистрации маршрутов, который должен иметь аннотацию {@link Controller}
* @author dingnate
*
*/
@ActionInterceptor(ControllerInterceptor.class)
@ActionMapping(actionKey = "/controller")
@Controller
public class DemoController {
/**
* httpMethod указывает метод HTTP-запроса,
* argName — имя аргумента, которое можно использовать при доступе через веб.<br>
* actionKey: ключ действия контроллера и метода определяют уникальный маршрут этого метода.<br>
* Если метод не имеет actionKey, он будет установлен по умолчанию как имя метода.
* @param b
* @return
*/
@ActionMapping(httpMethod = HttpKit.METHOD_POST, actionKey = "method1", argNames = { "b" })
public AxBean method1(BxBean b) {
System.out.println(getClass().getName() + ".method1(BBean)");
return new AxBean(1, true, "A", b);
}
/**
* Этот метод использует не только декларированный здесь интерцептор, но также и интерцепторы верхнего уровня контроллера и глобальные интерцепторы.
* @param a
* @return
*/
@ActionInterceptor(MethodInterceptor.class)
@ActionMapping(argNames = { "a" })
public int method2(int a) {
System.out.println(getClass().getName() + ".method2(int)");
return a;
}
/**
* Этот метод очищает верхний уровень интерцепторов, оставляя только этот метод.
* При доступе через веб, параметры могут быть заменены следующими значениями, например "a" -> "0"
* @param a
* @return
*/
@ClearActionInterceptor
@ActionInterceptor(MethodInterceptor.class)
@ActionMapping
public String method3(String a) {
System.out.println(getClass().getName() + ".method3(int)");
return a;
}
/**
* Метод без аннотации ActionMapping не будет зарегистрирован и недоступен через веб.
*/
public void method4() {
System.out.println(getClass().getName() + ".method4()");
}
}
public class MethodInterceptor extends AbstractActionIntercptor {
@Override
public void interceptor(ActionInvoker invoker) {
System.out.println(getClass().getName()+":in");
invoker.invoke();
System.out.println(getClass().getName()+":out");
}
}
com.ditty.demo.server.ServerDemo.java
public class ServerDemo {
public static void main(String[] args) {
//Регистрация одного класса контроллера, используется когда отключен сканнер классов
//HttpConfiguration.me().getRouters().add(Controller.class);
//Запуск сканнера классов, конфигурирование префиксов классов и JAR-пакетов
HttpConfiguration.me().getClassSaner().addClassPrefixes("com.ditty.demo.").addJarPrefixes("").scanClasses();
//Запуск сканнера классов без конфигурирования префиксов, что приведет к полному сканированию всех классов
//HttpConfiguration.me().getClassSaner().scanClasses();
ServerFactory.me().getServer().start();
//Настройка запуска сервера
//ServerFactory.me().getServer().start(webDir, port, contextPath);
}
}
Примечание: Поддерживается настраиваемое сканирование классов, автоматическая регистрация маршрутов для классов с аннотацией Controller
.
POST localhost:8090/controller/method1
{
"b":{"a":1,"b":true,"d":"2018-05-26 16:36:34.039","s":"ss"}
}
{
"returnValue": {
"a": 1,
"b": true,
"bBean": {
"a": 1,
"b": true,
"d": "2018-05-26 16:36:34.039",
"s": "ss"
},
"s": "A"
}
}
POST localhost:8090/controller/method2
{
"0":1
}
{
"returnValue": 1
}
POST localhost:8090/controller/method3/cc
Примечание: Параметры пути используются путем добавления значений параметров после /
, разделенных -
.
POST localhost:8090/controller/method3?0=cc
{
"returnValue": "cc"
}
Примечание: Параметры запроса используются путем добавления выражений параметров после ?
, разделенных &
. Например, localhost:8090/controller/method?arg0=x0&arg2=x2
.
GET localhost:8090/index.html
Примечание: Статические ресурсы должны содержать точку (.
).
2018-07-17
2018-06-22
2018-06-20
2018-05-31
2018-05-28
2018-05-27
Пожалуйста, оставьте свои отзывы или создайте issue, я буду рад ответить вам.
Если вы считаете, что данный проект был полезен для вас, ваша поддержка станет лучшим стимулом для меня.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )