多应用 Web 服务
在本教程中,我们将为 Netuno 创建一个多应用 Web 服务。这意味着我们将创建一个 Java Web 服务,它会放在 Netuno 的基础目录中,并且可以被 apps 文件夹内的任何应用使用。
按照之前的教程,我们要创建的示例是 calc 服务,这是一个执行简单算术运算的示例服务。
首先,需要创建项目的文件夹结构。在这个示例中,我们假设项目将创建在一个名为 Calc 的文件夹中。因此,需要创建与包名对应的文件夹结构(在我们的示例中为 org.netuno.addon.calc)。我们的文件夹结构因此是:
Calc/src/main/java/org/netuno/addon/calc/web/
在这个结构中,我们将创建一个名为 CalcWeb 的 Java 类,它将定义我们的自定义 Web 服务:
Calc/src/main/java/org/netuno/addon/calc/web/CalcWeb.java
那么类中定义的包将是:
package org.netuno.addon.calc.web;
为了让该类定义自定义的多应用 Web 服务,这个类需要继承 org.netuno.tritao.Web 类:
package org.netuno.addon.calc.web;
import org.netuno.tritao.Web;
public class CalcWeb extends Web {
// ...
}
要定义服务的 URL,请这样做:
package org.netuno.addon.calc.web;
import org.netuno.proteu.Path;
import org.netuno.tritao.Web;
@Path("/addon/calc/Calc")
public class CalcWeb extends Web {
// ...
}
要让服务正常工作,需要重写的方法是 run 方法:
package org.netuno.addon.calc.web;
import org.netuno.proteu.Path;
import org.netuno.proteu.ProteuException;
import org.netuno.tritao.Web;
import java.io.IOException;
@Path("/addon/calc/Calc")
public class CalcWeb extends Web {
@Override
public void run() throws IOException, ProteuException {
// ...
}
}
接下来,我们使用 Netuno 的一些资源来定义 run 方法,使其接收参数 op,该参数决定使用 plus(加法)还是 minus(减法)运算,并接收参数 x 和 y,它们将作为操作数(加法中为加数,减法中分别为被减数和减数)。
然后,根据所选运算,我们的服务将计算结果,并以 JSON 格式返回给用户:
package org.netuno.addon.calc.web;
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/calc/Calc")
public class CalcWeb extends Web {
@Override
public void run() throws IOException, ProteuException {
Req req = resource(Req.class);
Out out = resource(Out.class);
Val val = resource(Val.class);
String op = req.getString("op", "plus");
double x = req.getDouble("x", 0);
double y = req.getDouble("y", 0);
double result = 0;
if (op.equalsIgnoreCase("minus")) {
result = x - y;
} else {
result = x + y;
}
out.json(val.map().set("result", result));
}
}
现在只需编译该类,并确保 CalcWeb.class 文件位于以下文件夹中:
netuno/core/web/WEB-INF/classes/org/netuno/addon/calc/web/
或者生成一个 JAR 文件,并确保它位于以下文件夹中:
netuno/lib/
使用任意应用启动 Netuno 服务器:
./netuno server app=demo
要调用此服务,需要在 URL 末尾添加 .netuno:
http://localhost:9000/addon/calc/Calc.netuno
例如,如果你调用:
http://localhost:9000/addon/calc/Calc.netuno?op=minus&x=5&y=2
你将收到:
{"result":3}
你可以在这个链接中查看项目的完整文件。
在下一个教程中,我们将学习如何使用 Java 创建 Netuno 资源。