head operation should return 200OK response code instead of 400

BadRequest
This commit is contained in:
Corina Dalaban 2018-08-07 15:25:47 +03:00 committed by James Agnew
parent 5824826eff
commit 3a3d503772
2 changed files with 20 additions and 10 deletions

View File

@ -23,25 +23,35 @@ package ca.uhn.fhir.rest.server.method;
import static org.apache.commons.lang3.StringUtils.isNotBlank; import static org.apache.commons.lang3.StringUtils.isNotBlank;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.*; import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.Validate;
import org.hl7.fhir.instance.model.api.*; import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IIdType;
import ca.uhn.fhir.context.ConfigurationException; import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.model.api.IResource; import ca.uhn.fhir.model.api.IResource;
import ca.uhn.fhir.model.api.ResourceMetadataKeyEnum; import ca.uhn.fhir.model.api.ResourceMetadataKeyEnum;
import ca.uhn.fhir.model.primitive.IdDt;
import ca.uhn.fhir.model.primitive.InstantDt; import ca.uhn.fhir.model.primitive.InstantDt;
import ca.uhn.fhir.model.valueset.BundleTypeEnum; import ca.uhn.fhir.model.valueset.BundleTypeEnum;
import ca.uhn.fhir.rest.annotation.*; import ca.uhn.fhir.rest.annotation.Elements;
import ca.uhn.fhir.rest.api.*; import ca.uhn.fhir.rest.annotation.IdParam;
import ca.uhn.fhir.rest.api.server.*; import ca.uhn.fhir.rest.annotation.Read;
import ca.uhn.fhir.rest.api.Constants;
import ca.uhn.fhir.rest.api.RequestTypeEnum;
import ca.uhn.fhir.rest.api.RestOperationTypeEnum;
import ca.uhn.fhir.rest.api.server.IBundleProvider;
import ca.uhn.fhir.rest.api.server.IRestfulServer;
import ca.uhn.fhir.rest.api.server.RequestDetails;
import ca.uhn.fhir.rest.param.ParameterUtil; import ca.uhn.fhir.rest.param.ParameterUtil;
import ca.uhn.fhir.rest.server.ETagSupportEnum; import ca.uhn.fhir.rest.server.ETagSupportEnum;
import ca.uhn.fhir.rest.server.exceptions.*; import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import ca.uhn.fhir.rest.server.exceptions.NotModifiedException;
import ca.uhn.fhir.util.DateUtils; import ca.uhn.fhir.util.DateUtils;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
@ -125,8 +135,8 @@ public class ReadMethodBinding extends BaseResourceReturningMethodBinding {
if (isNotBlank(theRequest.getCompartmentName())) { if (isNotBlank(theRequest.getCompartmentName())) {
return false; return false;
} }
if (theRequest.getRequestType() != RequestTypeEnum.GET) { if (theRequest.getRequestType() != RequestTypeEnum.GET && theRequest.getRequestType() != RequestTypeEnum.HEAD ) {
ourLog.trace("Method {} doesn't match because request type is not GET: {}", theRequest.getId(), theRequest.getRequestType()); ourLog.trace("Method {} doesn't match because request type is not GET or HEAD: {}", theRequest.getId(), theRequest.getRequestType());
return false; return false;
} }
if (Constants.PARAM_HISTORY.equals(theRequest.getOperation())) { if (Constants.PARAM_HISTORY.equals(theRequest.getOperation())) {

View File

@ -132,7 +132,7 @@ public class ServerFeaturesDstu2Test {
ourLog.info(status.toString()); ourLog.info(status.toString());
assertEquals(400, status.getStatusLine().getStatusCode()); assertEquals(200, status.getStatusLine().getStatusCode());
assertThat(status.getFirstHeader("x-powered-by").getValue(), containsString("HAPI")); assertThat(status.getFirstHeader("x-powered-by").getValue(), containsString("HAPI"));
} }