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

OSCHINA-MIRROR/yangyale-quick-http

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

Быстрый вызов REST-интерфейса Quick-Http

quickstart

Зависимости

<dependency>
    <groupId>com.ipet</groupId>
    <artifactId>quick-http</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

Вызов

// Пакетное сканирование
@HttpComponentScan("com.ipet.test.rest.http")
@Configuration
@SpringBootApplication
public class ServiceExecutor {

    public static void main(String[] args) throws InterruptedException, ExecutionException {
        ConfigurableApplicationContext configurableApplicationContext =  new SpringApplication(ServiceExecutor.class).run(args);
        new CountDownLatch(1).await();
    }
}

// HTTP-интерфейс объявлен
@HttpComponent
public interface HttpTestInterface {

    // HTTP-запрос объявлен
    @HttpRequest(value = "http://www.qq.com",header = @Header(key = "Content-Type",value = "text/html"))
    String visitQQ();
}

Особенности

Поддерживает 6 видов HTTP-запросов GET, POST, HEAD, OPTIONS, PUT и DELETE. По умолчанию используется GET. Метод можно указать с помощью аннотации @HttpRequest.
@HttpComponent
public interface HttpTestInterface {
    @HttpRequest("https://www.baidu.com")
    String visitBaidu();

    @HttpRequest(value = "https://www.baidu.com",method = HttpMethod.POST)
    String postBaidu();

    @HttpRequest(value = "https://www.baidu.com",method = HttpMethod.PUT)
    String putBaidu();

    @HttpRequest(value = "https://www.baidu.com", method = HttpMethod.DELETE)
    String deleteBaidu();

    @HttpRequest(value = "https://www.baidu.com", method = HttpMethod.HEAD)
    String headBaidu();

    @HttpRequest(value = "https://www.baidu.com", method = HttpMethod.OPTIONS)
    String optionsBaidu();
}
SSL-запросы. Можно вручную указать сертификат. По умолчанию обработка сертификатов не выполняется. SSL-запросы автоматически распознаются по схеме. Указать сертификат можно с помощью аннотации @HttpRequest в поле certification.
@HttpComponent
public interface HttpTestInterface {
    @HttpRequest(value="https://localhost",certification="/home/ssl/key.crt")
    String visitBaidu();
}
Установка заголовка
@HttpComponent
public interface HttpTestInterface {
    // Способ 1: непосредственно в аннотации @HttpRequest через @Header или @Headers установить фиксированный заголовок
    @HttpRequest(value = "http://www.qq.com",header = @Header(key = "Content-Type",value = "text/html"))
    String visitQQ();
    
    // Способ 2: через параметры установить изменяемый заголовок
    @HttpRequest("http://www.qq.com")
    String visitQQ(@Header(key = "Content-Type") String contentType);
}
Настройка набора символов. По умолчанию — utf-8.
@HttpComponent
public interface HttpTestInterface {
    @HttpRequest(value = "http://www.qq.com",charset="GB2312")
    String visitQQ();
}
Размер буфера. По умолчанию равен 8 КБ.
@HttpComponent
public interface HttpTestInterface {

    @HttpRequest(url = "http://www.qq.com", bufferSize = 16 * 1024)
    String visitQQ(@Header(key = "Content-Type") String contentType);
}
Запрос перед и после обработки (перед и после операции класса определяются реализацией соответствующих интерфейсов PreRequest и AfterRequest).
@HttpComponent
public interface HttpTestInterface {
    @HttpRequest(url = "http://www.qq.com", bufferSize = 16 * 1024, preScript = BeforeRequestScript.class, afterScript = AfterRequestScript.class)
    String visitQQ(@Header(key = "Content-Type") String contentType);
}

// Класс предварительной обработки BeforeRequestScript
public class BeforeRequestScript implements PreRequest {
    @Override
    public void setRequestMethodMetadata(RequestMethodMetadata requestMethodMetadata) {
        //pass the request method metadata
    }

    @Override
    public void doScript() {
        //do your things...
    }
}


//Класс последующей обработки AfterRequestScript
public class AfterRequestScript implements AfterRequest {
    @Override
    public void doScript() {
        //do your things...
    }

    @Override
    public <T> void setResponse(T response) {
        //pass the response object
    }

    @Override
    public void setRequestMethodMetadata(RequestMethodMetadata requestMethodMetadata) {
        //pass the request method metadata
    }
}
Поддержка асинхронности. В настоящее время асинхронность реализуется через NIO. При использовании асинхронного режима необходимо учитывать, что Future в дженериках не может быть пустым или иметь знак вопроса. То есть должен быть указан нормальный тип.
@HttpComponent
public interface HttpTestInterface {

    // Нужно только установить возвращаемое значение как Future, чтобы автоматически определить асинхронный вызов
    @HttpRequest("https://www.baidu.com")
    Future<String> asyncVisitBaidu();
}

Версия 1.1

Поддержка внедрения свойств

properties @HttpComponent public interface HttpTestInterface {

//http request 声明
@HttpRequest(value = "http://www.qq.com",header = @Header(key = "Content-Type",value = "text/html"))
String visitQQ();

}

@HttpComponent("http://www.qq.com") public interface HttpTestInterface {

//http request 申明
@HttpRequest(header = @Header(key = "Content-Type",value = "text/html"))
String visitQQ();

}


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

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

Введение

Инструмент для быстрого вызова HTTP-интерфейса. Развернуть Свернуть
LGPL-3.0
Отмена

Обновления

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

Участники

все

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

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