Перейти к основному содержимому

Мультиприложенческий веб-сервис

В этом руководстве мы создадим мультиприложенческий веб-сервис для Netuno. Это означает, что мы создадим веб-сервис на Java, который будет находиться в базовом каталоге Netuno и сможет использоваться любым приложением внутри папки apps.

Пример, который мы создадим, следуя предыдущим руководствам, — это сервис калькулятор, который является примером сервиса, выполняющего простые арифметические операции.

Для начала необходимо создать структуру папок проекта. В этом примере мы будем считать, что проект будет создан в папке с именем Калькулятор. Поэтому нужно создать структуру папок, отражающую имя пакета (в нашем примере org.netuno.addon.калькулятор). Таким образом, наша структура папок будет:

  • Калькулятор/src/main/java/org/netuno/addon/калькулятор/веб/

Внутри этой структуры мы создадим класс Java с именем КалькуляторВеб, который определит наш персонализированный веб-сервис:

  • Калькулятор/src/main/java/org/netuno/addon/калькулятор/веб/КалькуляторВеб.java

Тогда пакет, определённый внутри класса, будет:

package org.netuno.addon.калькулятор.веб;

Чтобы класс определял персонализированный мультиприложенческий веб-сервис, этот класс должен расширять класс org.netuno.tritao.Web:

package org.netuno.addon.калькулятор.веб;

import org.netuno.tritao.Web;

public class КалькуляторВеб extends Web {
// ...
}

Чтобы задать URL сервиса, сделайте:

package org.netuno.addon.калькулятор.веб;

import org.netuno.proteu.Path;
import org.netuno.tritao.Web;

@Path("/addon/калькулятор/Калькулятор")
public class КалькуляторВеб extends Web {
// ...
}

Метод, который нужно переопределить, чтобы сервис работал, — это метод run:

package org.netuno.addon.калькулятор.веб;

import org.netuno.proteu.Path;
import org.netuno.proteu.ProteuException;
import org.netuno.tritao.Web;

import java.io.IOException;

@Path("/addon/калькулятор/Калькулятор")
public class КалькуляторВеб extends Web {
@Override
public void run() throws IOException, ProteuException {
// ...
}
}

Итак, используя некоторые ресурсы Netuno, определим метод run так, чтобы он принимал параметр операция, который определит, какую операцию использовать между плюс (сложение) и минус (вычитание), и параметры x и y, которые будут операндами (слагаемыми в случае сложения, уменьшаемым и вычитаемым соответственно в случае вычитания).

Затем, исходя из выбранной операции, наш сервис вычислит результат и вернёт его пользователю в формате JSON:

package org.netuno.addon.калькулятор.веб;

import org.netuno.proteu.Path;
import org.netuno.proteu.ProteuException;
import org.netuno.tritao.Web;
import org.netuno.tritao.resource.Out;
import org.netuno.tritao.resource.Req;
import org.netuno.tritao.resource.Val;

import java.io.IOException;

@Path("/addon/калькулятор/Калькулятор")
public class КалькуляторВеб extends Web {
@Override
public void run() throws IOException, ProteuException {
Req запрос = resource(Req.class);
Out вывод = resource(Out.class);
Val значения = resource(Val.class);

String операция = запрос.getString("операция", "плюс");
double x = запрос.getDouble("x", 0);
double y = запрос.getDouble("y", 0);

double результат = 0;

if (операция.equalsIgnoreCase("минус")) {
результат = x - y;
} else {
результат = x + y;
}

вывод.json(значения.map().set("результат", результат));
}
}

Теперь достаточно скомпилировать класс, убедившись, что файл КалькуляторВеб.class находится в папке:

  • netuno/core/web/WEB-INF/classes/org/netuno/addon/калькулятор/веб/

Или создать JAR-файл, убедившись, что он находится в папке:

  • netuno/lib/

Запустите сервер Netuno с любым приложением:

./netuno server app=demo

Чтобы вызывать этот сервис, необходимо добавить .netuno в конец URL:

  • http://localhost:9000/addon/калькулятор/Калькулятор.netuno

Например, если вы сделаете вызов:

  • http://localhost:9000/addon/калькулятор/Калькулятор.netuno?операция=минус&x=5&y=2

Вы получите в ответ:

{"результат":3}

Вы можете посмотреть полные файлы проекта по этой ссылке.

В следующем руководстве мы узнаем, как создать ресурс Netuno с помощью Java.