我是一个新手,刚接触Dropwizard框架。我正在尝试创建一个类似于教程中提到的person和people资源的新资源,链接在这里:https://github.com/dropwizard/dropwizard/tree/master/dropwizard-example。
我正在创建一个类似于下面这样的文档类 -
我的Dao文档如下所示:
但是我从客户端请求中收到了400的响应,请查看以下客户端请求。
我正在创建一个类似于下面这样的文档类 -
@Entity
@Table(name = "document")
@NamedQueries({
@NamedQuery(
name = "com.example.helloworld.core.Document.findAll",
query = "SELECT d FROM Document d"
),
@NamedQuery(
name = "com.example.helloworld.core.Document.findById",
query = "SELECT d FROM Document d WHERE d.Id = :Id"
)
})
public class Document {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long Id;
@Column(name = "ProcessingSetID")
private String ProcessingSetID;
@Column(name = "processed")
private String processed;
public long getId() {
return Id;
}
public void setId(long id) {
this.Id = id;
}
public String getProcessingSetID() {
return ProcessingSetID;
}
public void setProcessingSetID(String processingSetID) {
ProcessingSetID = processingSetID;
}
public String getProcessed() {
return processed;
}
public void setProcessed(String processed) {
this.processed = processed;
}
}
我的Dao文档如下所示:
public Optional<Document> findById(Long id) {
return Optional.fromNullable(get(id));
}
public Document create(Document document) {
return persist(document);
}
public List<Document> findAll() {
return list(namedQuery("com.example.helloworld.core.Document.findAll"));
}
}
我正在尝试在我的文档资源上调用POST方法,
@Path("/documents")
@Produces(MediaType.APPLICATION_JSON)
public class DocumentsResource {
private final DocumentDao documentDAO;
private static final Logger log = LoggerFactory.getLogger(DocumentsResource.class);
public DocumentsResource(DocumentDao documentDAO) {
this.documentDAO = documentDAO;
}
@POST
@UnitOfWork
public Document createDocument(Document document) {
log.info("inside POST method of document.");
System.out.println("inside POST method of document.....");
return documentDAO.create(document);
}
@GET
@UnitOfWork
public List<Document> listDocuments() {
return documentDAO.findAll();
}
}
但是我从客户端请求中收到了400的响应,请查看以下客户端请求。
Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/documents");
String input = "{\"processed\":\"new process\",\"ProcessingSetID\":\"new iD\"}";
ClientResponse response =
webResource.type("application/json").post(ClientResponse.class, input);
if (response.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}
我试图调试这个问题,但是请求首先没有到达POST方法。似乎它没有从JSON字符串创建文档对象,但我找不到原因。此外,当我直接在数据库中进行输入并进行GET调用时,会收到完美的JSON字符串等效对象。