Java 设计API以使用Jersey启动和停止进程
我正在用Java和Jersey开发一个RESTWeb服务器。这是我的第一个web应用程序,我希望确保我能够很好地构建应用程序。我创建了第一个运行良好的函数:Java 设计API以使用Jersey启动和停止进程,java,jersey,Java,Jersey,我正在用Java和Jersey开发一个RESTWeb服务器。这是我的第一个web应用程序,我希望确保我能够很好地构建应用程序。我创建了第一个运行良好的函数: @Path(“/startAuto”) 公休{ @得到 公共字符串startAuto(){ 试一试{ ProcessBuilder pb=新的ProcessBuilder(“/startAuto.sh”); 进程p=pb.start(); p、 waitFor(); 返回(“自动启动”); }捕获(例外e){ e、 printStackTr
@Path(“/startAuto”)
公休{
@得到
公共字符串startAuto(){
试一试{
ProcessBuilder pb=新的ProcessBuilder(“/startAuto.sh”);
进程p=pb.start();
p、 waitFor();
返回(“自动启动”);
}捕获(例外e){
e、 printStackTrace();
返回(“错误”);
}
}
}
我想添加一个新函数,如stopAuto
哪个更干净:在这个类中添加函数还是创建一个新类 正如peeskillet在他的评论中指出的,这取决于您想要如何构造URL 如果你想要像这样的东西 /自动/启动和 /自动/停止 我会在一节课上全力以赴,结构如下
@Path("/auto")
public class Rest {
@GET
@Path("/start")
public String startAuto() {
}
@GET
@Path("/stop")
public String stopAuto() {
}
}
良好的结构对于任何好的项目/产品都是必不可少的,但这也是一个问题,其答案因情况而异。 然而,如果有疑问,一个好的起点是按照“职责”对端点进行分组。如果它们属于同一类,那么就把它们放在同一个类中
个人观点:边界控制实体是我能找到的启动项目的最简单起点。然后根据需要调整结构。更多想法,请看亚当·宾的文章 通常,最好将另一个与当前资源相关的函数放在同一个类中 但您还应该记住,REST使用的是资源,而不是函数(名词,而不是动词)。因此,让API更加RESTfull可能是有意义的:
- 启动流程:
POST/auto/start HTTP/1.1
主持人:example.org
- 停止进程:
POST/auto/stop HTTP/1.1
主持人:example.org
使用此方法,您的资源类中将包含以下内容:
@Path(“/auto”)
公休{
@职位
@路径(“/start”)
公共字符串开始(){
...
}
@职位
@路径(“/stop”)
公共字符串停止(){
...
}
}
方法2
REST与协议无关,是一种体系结构。例如,当通过HTTP协议实现REST应用程序时,资源由URI标识,对资源的操作由URI表示
使用这种方法,例如,资源的新状态将使用JSON在请求负载中表示。要获取资源的状态,请使用;要替换资源的状态,请使用
您可以拥有以下内容:
- 启动流程:
PUT/auto/status HTTP/1.1
主持人:example.org
内容类型:application/json
{
“值”:“已启动”
}
- 停止进程:
PUT/auto/status HTTP/1.1
主持人:example.org
内容类型:application/json
{
“值”:“已停止”
}
- 获取进程的状态:
GET/auto/status HTTP/1.1
主持人:example.org
您的资源类如下所示:
@Path(“/auto/status”)
@使用(MediaType.APPLICATION_JSON)
@产生(MediaType.APPLICATION_JSON)
公休{
@放
公共字符串更改状态(状态状态){
...
}
@得到
公共状态getStatus(){
...
}
}
这就是Status
类的外观:
公共类状态{
私有字符串值;
//默认构造函数,省略了getter和setter
}
响应状态代码
您当然需要将操作结果告知您的客户。要做到这一点,请使用
一些可能有用的状态:
- :使用此状态表示请求已成功
- :使用此状态代码表示已接受处理请求,但处理尚未完成
- :使用此状态代码表示服务器已成功完成请求,并且响应有效负载正文中没有要发送的其他内容
- :Use这表示由于与目标资源的当前状态冲突,请求无法完成