【发布时间】:2020-10-08 16:33:31
【问题描述】:
我的程序基于hapishir's website 上的示例,并且该操作的工作原理是我收到 JSON 正文并更新数据库。我遇到的问题是没有返回响应。我构建了 MethodOutcome 对象,并“返回”它,但邮递员中什么也没有出现。我还编写了 @read 和 @Search 操作,它们都在 Postmat 的响应中返回资源,但是这个 @Create 不返回任何响应。
ObservationResourceProvider.java
public class ObservationResourceProvider implements IResourceProvider {
public ObservationResourceProvider() { }
@Override
public Class<? extends IBaseResource> getResourceType() {
return Observation.class;
}
@Create()
public MethodOutcome createObservation(@ResourceParam Observation observation){
OpenERMDatabase db = new OpenERMDatabase();
String newObservationId = db.addNewObservation(observation);
//return the new Id if success else return an error message
MethodOutcome retVal = new MethodOutcome();
if (newObservationId != null) {
retVal.setId(new IdType("Observation", newObservationId, "1.0"));
retVal.setCreated(true);
}else {
OperationOutcome outcome = new OperationOutcome();
outcome.addIssue().setDiagnostics("An Error Occurred");
retVal.setOperationOutcome(outcome);
retVal.setCreated(false);
}
return retVal;
}
}
SimpleRestfulServer.java
@WebServlet("/*")
public class SimpleRestfulServer extends RestfulServer{
//Initialize
@Override
protected void initialize()throws ServletException{
//create a context for the appropriate version
setFhirContext(FhirContext.forDstu3());
//Register Resource Providers
registerProvider(new PatientResourceProvider());
registerProvider(new ObservationResourceProvider());
}
}
【问题讨论】:
-
明智的做法是详细说明您在邮递员中看到的内容。你看不到“什么都没有”。您会看到响应标头、响应状态等。唯一真正看不到任何内容的情况是请求无法完整执行,通常是因为您的 URL 错误。
-
这是一个很好的观点。正文中没有任何内容,但有标头数据,其中包含一个“位置”字段,其中包含“localhost:15437/Observation/<ID>/_history/1.0”,可用于获取新创建的 ID 值,但从来没有任何诊断信息正文或标题中的失败场景。我在哪里可以找到那个?
-
这对我来说听起来像是预期的行为。 FHIR 基于纯 REST 实现,纯 REST 实现规定在响应中您可以确定创建实体的位置。您显然在响应标头中有该信息。它是否记录在您应该获得 JSON 响应正文的某个地方?
-
我真的不在乎它是在标题中还是在正文中,但我仍然没有看到任何有关诊断的信息。如果它没有在正文中返回,并且在我运行的失败测试中我没有在标题中看到任何内容,那么我如何找到这些信息?
-
...通过请求您获得的位置 URL?
标签: java spring-boot hapi hapi-fhir