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

OSCHINA-MIRROR/xiaozhuai-JHttp

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

JHttp

[中文文档] [English README]

JHttp — это небольшая реализация HTTP-сервера.

Он может анализировать GET-запросы и формы POST (поддерживается только x-www-form-urlencoded), а также предоставляет простой маршрутизатор.

Не используйте его в проектах, требующих высокой эффективности, так как он основан на пуле потоков и не поддерживает событийно-управляемый подход (аналогично Apache).

Но вы можете использовать его в приложении для Android.

ВНИМАНИЕ

Для порта < 1024 требуются права суперпользователя.

Если вы используете его на Android, вы не можете запускать сервер в потоке пользовательского интерфейса.

Пример

См. Main.java

public class Main {

    static HttpServer server;
    static final int PORT = 8080;

    public static void main(String[] args) {
        HttpLog.setLogLevel(HttpLog.LOG_LEVEL_DEBUG); //LOG_LEVEL_INFO по умолчанию

        // когда происходит 404, рекомендуется использовать эту функцию для определения пользовательской страницы ошибки
        HttpConfig.addCustomPageAction(404, (request, response) -> response.append("404 Not Found, Powered by JHttp"));

        try {
            server = new HttpServer(PORT);

            // пример маршрута, анонимный внутренний класс или лямбда (на Java 8)
            server.addRouter("/", new IHttpRouter() {
                @Override
                public void onRoute(HttpRequest request, HttpResponse response) {
                    response.append("hello");
                }
            });

            // пример регулярного маршрута
            server.addRouterRegex("/article/(\\w+)", (request, response) -> {
                String action = request.getPathinfo().group(1); // (\\w+) возможно добавить, удалить, прочитать и т. д.
                response.append(action+" an article");
            });

            // пример GET-запроса
            server.addRouter("/user", (request, response) -> {
                String user = request.get("user", "");
                response.append("привет, " + user);
            });

            // пример файла ответа
            server.addRouter("/file", (request, response) -> {
                try {
                    response.contentType("text/plain");
                    response.file("/Users/xiaozhuai/Desktop/test.txt");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });

            //пример контроллера, помеченное знаком «?» действие будет именем метода действия
            server.addController("/comment/(?<action>\\w+)", ExampleCommentController.class);

            server.serv();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Предупреждение

Для router или regexRouter помните, что нельзя использовать переменные-члены для передачи параметров функции, это вызовет конкуренцию между несколькими потоками.

Конечно, если вы используете Java 8, лямбды — хорошая идея. С лямбдами вам не нужно об этом беспокоиться.

Что касается controller, каждый раз, когда маршрутизатор обращается к контроллеру, создаётся новый экземпляр контроллера, поэтому вы можете делать всё, что угодно, включая использование переменных-членов для передачи параметров функций.

Благодарность

Спасибо за работу этим замечательным людям. : )

  • @py庄稼汉 (weihai4099)

Комментарии ( 0 )

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

Введение

JHttp — это лёгкая Java-реализация HTTP-сервиса. Может применяться на Android. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/xiaozhuai-JHttp.git
git@api.gitlife.ru:oschina-mirror/xiaozhuai-JHttp.git
oschina-mirror
xiaozhuai-JHttp
xiaozhuai-JHttp
master