JsonRPC маппинг

397
11 февраля 2017, 06:39

Я создал простую JsonRPC server (Netty socketServer) для выполнения определенных задач, общих для нашей команды, но вызывающиеся из разных сетей. Сервер получает JSON-RPC-запрос от (Netty socket client)клиента, ищет метод, и вызывает метод по переданным параметрам. Сам метод-это один возвращает JSON-RPC ответ. Как я могу создать архитектуру, которая позволяет мне по JSON-RPC-запрос найти нужной метод и выполнить его. Нужно создать маппинг.

Answer 1

В мою извращенную голову пришло такое решение. Не сомневаюсь, что есть более "правильные" и красивые способы.

public class Handler {
    private Map<String, Controller> controllers;
    public Handler() {
        controllers = new HashMap<>();
        //создаем экземпляры контроллеров на разные методы
        controllers.put("hello", input -> { /*some code*/ return "{result...}"; });
        controllers.put("ping", input -> "{\"result\": \"pong\"...}");
        controllers.put("foo", input -> new FooController().execute(input));
    }
    public String handle(String input) {
        //ищем нужный контроллер
        Controller controller = controllers.get(parseMethodName(input));
        if (controller != null)
            return controller.execute(input);
        else
            //не нашли - возвращаем 404 или кидаем исключение
            return "404";
    }
    private String parseMethodName(String input) {
        //тут можно распарсить название метода
        return "methodName";
    }
    public class FooController implements Controller {
        @Override
        public String execute(String input) {
            return "bar";
        }
    }
    public interface Controller {
        String execute(String input);
    }
}
READ ALSO
Лишние символы в html-разметке

Лишние символы в html-разметке

На странице внезапно появились символы `` c разными вариациями, в зависимости от ОС:

305
Wow.js не работает при overflow:scroll-y

Wow.js не работает при overflow:scroll-y

Всем здравствуйтеПомогите пожалуйста советом

382
css, chrome, работа с консолью

css, chrome, работа с консолью

Добрый вечер, Как определить у какого файла приоритет больше чем у твоих стилейТ

347