我有大约7个REST Web服务要实现.其中一些Web服务具有标准(相同)响应,而一些响应不同.
对这些Web服务的请求是不同的,但是一些请求和一些响应具有相同的底层数据对象.
我不确定是否必须为每个Web服务构建单独的请求/响应类或重用标准服务.我想知道是否有一个设计模式来为这些Web服务建模请求对象和响应对象.
好吧,说帐户和书籍是我的网络服务将要处理的两个休息资源.
class Account {
String username;
String id;
}
class Book {
String title;
String isbn;
}
Run Code Online (Sandbox Code Playgroud)
所以我的网络服务看起来像这样:
MYAPI/CreateAccountandBook
MYAPI/Account/Create
MYAPI/Book/Create
MYAPI/Book/Update/{isbn}
MYAPI/Account/Update/{id}
MYAPI/Account/getInfo/{id}
Run Code Online (Sandbox Code Playgroud)
等等.
现在CreateAccountandBook请求将获取有效负载中的帐户对象和书籍列表.此外,响应对象MYAPI/Account/getInfo/{id}还有一个帐户对象和与该帐户关联的书籍列表.但响应对象还包括一个statusCode和Description.
现在我想以最好的方式为这些请求和响应对象创建类.
好的开始.
我有两个抽象类StandardRequest和StandardResponse.
所有请求类都将扩展标准请求类并相应地进行自定义.所有响应类都将扩展标准响应类并相应地进行自定义.
但是这些请求和响应可能彼此不同,但仍然重用相同的实体对象.
例如:
createAccountandBook 请求对象如下所示:
class CreateAccountAndBookRequest {
Account account;
List<Book> books;
}
Run Code Online (Sandbox Code Playgroud)
而对getInfoWeb服务的响应是:
class GetInfoResponse {
Account account;
List<Book> books;
String statusCode;
String description;
}
Run Code Online (Sandbox Code Playgroud)
所以请求和响应类之间存在重叠.我可以为每个Web服务创建两个(req/res)类.但是想知道是否有更好的方法来模拟这些类.
当我尝试将现有项目导入 eclipse 时,我看到 src 文件夹有重复的包(下面以红色突出显示)不知道为什么。我该如何解决这个问题?

我有一个表,比如,具有ID,State和User_ID的Instrument作为列.
所以我有这个JPA查询返回所有具有匹配User_ID的乐器记录.
query = manager.createQuery("SELECT instrument from Instrument instrument
where instrument.User_ID=:User_ID",Instrument.class);
query.setParameter("User_ID", User_ID);
List<Instrument> instruments= query.getResultList();
for(Instrument instrument:instruments){
System.out.println("Instrument ID "+instrument.getID());
// using sysout as it is not prod code yet
}
Run Code Online (Sandbox Code Playgroud)
它只返回重复的第一条记录,与匹配的记录一样多次.
11:13:01,703 INFO [stdout] (http-/127.0.0.1:8080-1) Instrument ID 1
11:13:01,704 INFO [stdout] (http-/127.0.0.1:8080-1) Instrument ID 1
11:13:01,704 INFO [stdout] (http-/127.0.0.1:8080-1) Instrument ID 1
Run Code Online (Sandbox Code Playgroud)
我在Db中有三个记录,仪器ID为1,2和3
我在hibernate上启用了show sql查询,查询在数据库上直接运行并返回不同的记录.
Hibernate查询:
select instrumentjdo0_.User_ID as member_U1_0_, instrumentjdo0_.ID as ID2_0_,
instrumentjdo0_.state as state4_0_ from instrument instrumentjdo0_ where instrumentjdo0_.User_ID=?
Run Code Online (Sandbox Code Playgroud)
仪器实体
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id; …Run Code Online (Sandbox Code Playgroud) 我试图在jboss eap 6.3服务器上部署一个war(Rest based Webservice)文件.部署失败,出现以下跟踪.
我查看了所有依赖项,一切看起来都很好.
我错过了什么吗?
11:22:57,659 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015876: Starting deployment of "RestService.war" (runtime-name: "RestService.war")
11:22:58,074 WARN [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015893: Encountered invalid class name 'com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$App' for service type 'javax.ws.rs.ext.MessageBodyReader'
11:22:58,074 WARN [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015893: Encountered invalid class name 'com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$Text' for service type 'javax.ws.rs.ext.MessageBodyReader'
11:22:58,075 WARN [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015893: Encountered invalid class name 'com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General' for service type 'javax.ws.rs.ext.MessageBodyReader'
11:22:58,075 WARN [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015893: …Run Code Online (Sandbox Code Playgroud)