Рестлет: Как создать ресурс и как отправить ответ - PullRequest
0 голосов
/ 18 января 2019

Я строю отдых HTTP-сервер на Android с помощью фреймворка restlet. Я использую последнюю версию, которая является 3.0-M1. Я следовал инструкциям к этому видео, https://www.youtube.com/watch?v=jmxVKC5qTVg&t=2140s. Мне нужно было добавить:

Engine.getInstance().getRegisteredServers().clear();
Engine.getInstance().getInstance().getRegisteredServers().add(new HttpServerHelper(null));

для работы сервера, в соответствии с этим: Android - Первый запуск сервера Restlet 2.2 - Нет доступного соединителя сервера

Итак, мой код выглядит так:

public static void runServer(int port) throws Exception{
Component component = new Component();
component.getServers().add(Protocol.HTTP, port);
Application application - new DataServer();
String contexRoot = "/dataserver";
component.getDefaultHost().attach(contexRoot, application);
component.start()
}

В основном методе я просто вызываю runServer (). Также, как и в видео, я переопределил createInboundRoot, который позволяет мне добавлять ресурс после «корневого» ресурса и отображать его в классе, который будет обрабатывать методы Get или Post, используя аннотации. Код для этого выглядит так:

public Restlet createInboundRoot(){
Router router = new Router(getContext());
router.attach("/year", YearResource.class);
return router;
}

Итак, у меня два вопроса:

  1. Как я могу создать сервер без "корневого" ресурса, в данном случае без сервера данных, я хочу просто http://address:port/year например.

  2. Как я могу отправить ответ, например, если кто-то вызывает метод post и отправляет JSON, в котором он отправляет 5 пар значений ключей, и требуется, чтобы он отправлял 6, я хочу иметь возможность отправлять HTTP-ответ другим чем 200 OK.

Также, если у кого-то есть хороший учебник для такого рода вещей, в основном мне просто нужно иметь 3 ресурса, два из которых будут вызываться методом post, мне нужно проверить параметры, выполнить некоторые операции и вернуть файл json, и HTTP-ответ.

Заранее всем спасибо за помощь: D

...