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

OSCHINA-MIRROR/windoze-vertx-kotlin-rpc

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

Vertx Kotlin RPC over EventBus

A minimalist RPC framework для Vertx/Kotlin

Начало работы

Артефакт размещён на jCenter, следуйте инструкции, чтобы настроить инструмент сборки.

Maven:

<dependency>
    <groupId>codes.unwritten</groupId>
    <artifactId>vertx-kotlin-rpc</artifactId>
    <version>0.6</version>
    <type>pom</type>
</dependency>

Gradle:

compile 'codes.unwritten:vertx-kotlin-rpc:0.6'

Чтобы создать RPC-сервис

import codes.unwritten.vertx.kotlin.rpc.RpcServerVerticle

//...

// Не нужно реализовывать интерфейс сервиса, если сигнатура метода совпадает
class HelloSvcImpl {
    // Метод может быть suspend или нет
    fun hello(name: String): String = "Hello, $name!"
}

// ...

vertx.deployVerticle(RpcServerVerticle("test-channel")
    .register("hello", HelloSvcImpl()))

Чтобы вызвать RPC-сервис

import codes.unwritten.vertx.kotlin.rpc.getServiceProxy

// ...

interface HelloSvc {
    // Должен быть suspend, иначе при вызове будут выброшены исключения.
    suspend fun hello(world: String): String
}

// ...

// Получить объект прокси службы
val svc: HelloSvc = getServiceProxy(vertx, "test-channel", "hello")
// Вызвать службу
assertEqual("Hello, world!", svc.hello("world"))

Чтобы создать HTTP RPC-сервис

import io.vertx.core.Vertx
import io.vertx.ext.web.Router
import io.vertx.ext.web.handler.BodyHandler
import io.vertx.kotlin.coroutines.CoroutineVerticle
import codes.unwritten.vertx.kotlin.rpc.HttpRpcHandler

// ...
class SomeVerticle: CoroutineVerticle() {
    override suspend fun start() {
        // ...
        val router = Router.router(vertx)
        
        // Убедитесь, что обработчик тела включён
        router.route().handler(BodyHandler.create())
        
        // Поддерживается только метод POST
        router.post("/some-path").handler(HttpRpcHandler().register("hello", object {
            fun hello(name: String): String = "Hello, $name!"
        }))
        // Запустить HTTP-сервер и т. д.
        // ...
    }
}

Чтобы вызвать HTTP RPC-сервис

import codes.unwritten.vertx.kotlin.rpc.getHttpServiceProxy

interface HelloSvc {
    // Должен быть suspend, иначе исключения будут выброшены при вызове.
    suspend fun hello(name: String): String
}

// ...

// Получить прокси объекта службы из URL
val svc = getHttpServiceProxy<HelloSvc>(vertx, "http://127.0.0.1:8080/some-path", "hello")
// Вызов службы
assertEqual("Привет, мир!", svc.hello("мир"))

Чтобы вызвать JSON RPC-сервис

import codes.unwritten.vertx.kotlin.rpc.HttpRequest
import codes.unwritten.vertx.kotlin.rpc.JsonRpcException
import codes.unwritten.vertx.kotlin.rpc.QueryParam
import codes.unwritten.vertx.kotlin.rpc.getHttpJsonRpcServiceProxy

interface DemoSvc {
    // Должен быть suspend, иначе исключения будут выброшены при вызове.
    // Аннотация HttpRequest используется для настройки сопоставления
    // По умолчанию метод — POST, а путь — имя метода
    @HttpRequest(method = HttpMethod.GET, path = "comments")
    suspend fun getComments(postId: Int): List<Comment>
}

// ...

// Получить прокси объекта службы из URL
val svc = getHttpJsonRpcServiceProxy<PostmanSvc>(vertx, "https://postman-echo.com/")
// Вызов службы
context.assertTrue(svc.getComments(1).isNotEmpty())

Другой пример:

interface PostmanSvc {
    @HttpRequest(method = HttpMethod.GET)
    // Аннотация QueryParam указывает, что это параметр запроса, а не часть тела запроса,
    // Также можно настроить имя параметра
    suspend fun get(@QueryParam foo1:

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

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

Введение

Реализованный на Kotlin крайне упрощённый RPC-фреймворк Vertx, который одновременно поддерживает Java и Kotlin. Развернуть Свернуть
WTFPL
Отмена

Обновления

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

Участники

все

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

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