SourceUnavailable
오류 코드
steps.json2xml.SourceUnavailable
오류 응답 본문
{ "fault": { "faultstring": "JSONToXML[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.json2xml.SourceUnavailable" } } }
오류 예시
{
"fault": {
"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available",
"detail": {
"errorcode": "steps.json2xml.SourceUnavailable"
}
}
}
원인
이 오류는 JSON-XML 정책의 <Source>
요소에 지정된 메시지 변수가 다음 중 하나인 경우 발생합니다.
- 범위를 벗어난 경우(정책이 실행 중인 특정 흐름에서 사용할 수 없음)
- 확인할 수 없는 경우(정의되지 않음)
예를 들어 JSON to XML 정책이 요청 흐름에서 실행되어야 하지만, <Source>
요소가 요청 흐름에 존재하지 않는 response
변수로 설정된 경우에 이 오류가 발생합니다.
진단
오류가 발생한 JSON to XML 정책 및 사용할 수 없는 변수의 이름을 식별합니다. 두 항목은 모두 오류 응답의
faultstring
요소에서 찾을 수 있습니다. 예를 들어 다음faultstring
에서 정책 이름은Convert-JSONToXML
이고 변수는response
입니다."faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
실패한 JSON to XML 정책 XML에서
<Source>
요소에 설정된 변수 이름이 위 1단계의 오류 문자열에서 식별된 변수 이름과 일치하는지 확인합니다. 예를 들어 다음 JSON to XML 정책은<Source>
요소에faultstring
에 있는 것과 일치하는response
라는 변수를 지정합니다.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML"> <DisplayName>Convert-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>request</OutputVariable> <Source>response</Source> </JSONToXML>
<Source>
요소에 사용된 변수가 JSON to XML 정책이 실행되는 흐름에서 정의되었고 사용 가능한지 확인합니다.변수가 다음 중 하나인 경우
- 범위를 벗어난 경우(정책이 실행 중인 특정 흐름에서 사용할 수 없음)
- 확인할 수 없는 경우(정의되지 않음)
이는 오류의 원인이 됩니다.
예를 들어 위에 표시된 JSON to XML 정책이 요청 흐름으로 실행된다고 가정해보세요.
response
변수는 JSON에서 XML 정책의<Source>
요소에 사용됩니다. 응답 변수는 응답 흐름에서만 사용할 수 있습니다.response
변수가 요청 흐름에 존재하지 않으므로 오류 코드가 수신됩니다.steps.json2xml.SourceUnavailable
해결 방법
실패한 JSON to XML 정책의 <Source>
요소에 설정된 변수가 정의되었고 정책이 실행되는 흐름에 존재하는지 확인합니다.
위의 JSON to XML 정책 예시를 수정하려면 <Source>
요소를 수정하여 request
변수를 사용할 수 있습니다. 이 변수가 요청 흐름에 존재하기 때문입니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML">
<DisplayName>Convert-JSONToXML</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>request</OutputVariable>
<Source>request</Source>
</JSONToXML>
ExecutionFailed
오류 코드
steps.json2xml.ExecutionFailed
오류 응답 본문
{ "fault": { "faultstring": "JSONToXML[policy_name]: Execution failed due to reason: Expecting { or [ at line 1", "detail": { "errorcode": "steps.json2xml.ExecutionFailed" } } }
가능한 원인
이 오류의 가능한 원인은 다음과 같습니다.
원인 | 설명 |
입력 페이로드 누락 | 입력 페이로드(JSON)가 비어 있습니다. |
무효하거나 형식이 잘못된 입력 | JSON에 XML로 전달된 입력(JSON)이 잘못되었거나 형식이 잘못되었습니다. |
원인: 입력 페이로드 누락
<Source>
요소에 지정된 변수의 콘텐츠(페이로드)가 비어 있으면 JSON to XML 정책에서 이 오류가 발생합니다.
예를 들어 JSON-XML 정책에서 <Source>
요소가 request
또는 response
변수로 설정되었고 JSON 페이로드가 포함되어야 하지만 페이로드가 비어 있으면 오류가 발생합니다.
진단
오류가 발생한 JSON to XML 정책을 식별합니다. 이 정보는 오류 응답의
faultstring
요소에서 확인할 수 있습니다. 예를 들어 다음faultstring
에서 정책 이름은Convert-JSONToXML
입니다."faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
실패한 JSON to XML 정책 XML의
<Source>
요소를 검토하고 지정된 변수를 결정합니다. 예를 들어 다음 JSON to XML 정책에서는<Source>
요소가request
으로 설정됩니다.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML"> <DisplayName>Convert-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>request</OutputVariable> <Source>request</Source> </JSONToXML>
정책의
<Source>
요소에 지정된 변수가 비어 있는지 확인합니다. 비어 있으면 이것이 오류의 원인입니다.위에 표시된 JSON to XML 정책 예시에서는 클라이언트에서 전송한 요청 페이로드(즉, 요청 본문)가 비어 있습니다.
예를 들면 다음과 같습니다.
curl -v "http://your_host_alias/v1/testjsontoxml" -H "Content-Type: application/json"
여기서 your_host_alias는 재정의 파일의
virtualhosts.hostAliases
속성에 구성된 대로 API에 액세스하는 데 사용되는 공개 도메인입니다. 클러스터 구성을 참조하세요.JSON 응답 페이로드가 비어 있으므로 오류 코드가 수신됩니다.
steps.json2xml.ExecutionFailed
이 오류는
<Source>
요소가 응답으로 설정되었지만 백엔드 서버에서 빈 페이로드가 전달되었을 때에도 발생할 수 있습니다.
해결 방법
<Source>
요소의 JSON to XML 정책에 전달된 입력이 올바른 JSON 페이로드이며 비어 있지 않은지 확인합니다.
샘플 JSON-XML 정책의 문제를 해결하려면 유효한 JSON 페이로드를 전달하세요. 예를 들면 다음과 같습니다.
다음 콘텐츠로
city.json
라는 파일을 만듭니다.{ "Name":"Apigee", "City":"Bengaluru", "Pincode":"560016" }
다음과 같이 curl 명령어를 사용하여 API 호출을 수행합니다.
curl -v "http://your_host_alias/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
여기서 your_host_alias는 재정의 파일의
virtualhosts.hostAliases
속성에 구성된 대로 API에 액세스하는 데 사용되는 공개 도메인입니다. 클러스터 구성을 참조하세요.
원인: 입력이 잘못되었거나 형식이 잘못됨
JSON to XML 정책이 무효하거나 형식이 잘못된 입력을 파싱하면 이 오류가 발생합니다.
예를 들어 JSON to XML 정책에 다음의 잘못된 JSON을 입력하여 제공하는 경우
[
"args": ["name" : "Google" ]
]
다음 오류가 발생합니다.
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
진단
오류가 발생한 JSON to XML 정책을 식별합니다. 이 정보는 오류 응답의
faultstring
요소에서 확인할 수 있습니다. 예를 들어 다음faultstring
에서 정책 이름은Convert-JSONToXML
입니다."faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
JSON to XML 정책 XML에 지정된
<Source>
요소를 검사합니다. 예를 들어 다음 JSON to XML 정책에는<Source>
요소가request
변수로 설정되어 있습니다.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML"> <DisplayName>Convert-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>request</OutputVariable> <Source>request</Source> </JSONToXML>
<Source>
요소에 지정된 입력이 유효한 JSON 페이로드인지 확인합니다. 입력이 무효하거나 형식이 잘못되었으면 이것이 오류의 원인입니다.다음과 같은 잘못된 JSON이 정책에 전달되었다고 가정합니다.
[ "args": ["name" : "Google" ] ]
다음은 요청 전달 방식을 보여주는 샘플 API 호출입니다.
curl -v "http://your_host_alias/v1/testjsontoxml" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "Google" ]]'
여기서 your_host_alias는 재정의 파일의
virtualhosts.hostAliases
속성에 구성된 대로 API에 액세스하는 데 사용되는 공개 도메인입니다. 클러스터 구성을 참조하세요.JSON 객체는 대괄호([ ])로 시작되고 끝나기 때문에 요청에서 전달된 JSON 페이로드는 유효하지 않습니다. 이런 이유로 다음과 같은 오류 코드가 표시됩니다.
steps.json2xml.ExecutionFailed
이 오류는
<Source>
요소가 응답으로 설정되었지만 JSON 응답 페이로드가 잘못되었거나 형식이 잘못된 경우에도 발생할 수 있습니다.
해결 방법
<Source>
요소의 JSON to XML 정책에 전달된 입력이 유효하며 형식이 잘못되었는지 확인합니다.
위에 설명된 JSON-XML 정책 샘플의 문제를 해결하려면 다음과 같이 유효한 JSON 페이로드 요청을 전달합니다.
{
"args" : {
"name" : "Google"
}
}
OutputVariableIsNotAvailable
오류 코드
steps.json2xml.OutputVariableIsNotAvailable
오류 응답 본문
{ "fault": { "faultstring": "JSONToXML[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.json2xml.OutputVariableIsNotAvailable" } } }
오류 예시
{
"fault": {
"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available.",
"detail": {
"errorcode": "steps.json2xml.OutputVariableIsNotAvailable"
}
}
}
원인
이 오류는 <Source>
JSON to XML 정책의 요소에 지정된 변수가 문자열 유형이고 <OutputVariable>
요소가 정의되지 않은 경우에 발생합니다. <Source>
요소에 정의된 변수가 문자열 유형인 경우 <OutputVariable>
요소는 필수입니다.
진단
오류가 발생한 JSON to XML 정책을 식별합니다. 오류 응답의
faultstring
요소에서 확인할 수 있습니다. 예를 들어 다음faultstring
에서 정책 이름은Check-JSONToXML
입니다."faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
실패한 JSON to XML 정책에서
<OutputVariable>
이 누락되었는지 확인합니다.다음 JSONToXML 정책 샘플에는
<OutputVariable>
요소가 없습니다.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML"> <DisplayName>Check-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <Source>PostalCode</Source> </JSONToXML>
<Source>
요소에 지정된 변수 유형을 확인합니다.- 변수가 먼저 정의된 API 프록시 내에서 코드를 찾습니다.
- 변수가 먼저 정의되고 채워지는 정책을 확인한 후에는 해당 변수 유형을 다음과 같이 확인해야 합니다.
- 유형 속성의 값을 확인합니다(있는 경우).
- 유형 속성이 없으면 변수가 문자열로 간주됩니다.
- 변수 유형이 문자열이면 이것이 오류의 원인이 됩니다. 일반적인 변수 및 유형에 대해서 알아보려면 변수 참조를 확인하세요.
예를 들어 위 JSON to XML 정책에서
PostalCode
변수를 살펴봅니다.예를 들어 아래와 같이
PostalCode
변수에 값을 할당하기 위해 메시지 할당 정책을 사용한다는 점을 고려해 보세요.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode"> <DisplayName>Assign_PostalCode</DisplayName> <Properties/> <AssignVariable> <Name>PostalCode</Name> <Value>{"value":"56008"}</Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<AssignVariable>
에 설정되는 변수 유형은 문자열입니다. 따라서PostalCode
변수는 문자열 유형입니다.PostalCode
변수는 JSONToXML 정책의<Source>
요소에 사용됩니다.<Source>PostalCode</Source>
PostalCode
는 문자열 유형이고<OutputVariable>
요소가 누락되었으므로 오류 코드가 수신됩니다.steps.json2xml.OutputVariableIsNotAvailable
해결 방법
JSONToXML 정책의 <Source>
요소에 지정된 변수가 문자열 유형인 경우 <OutputVariable>
요소가 정책 내에 정의되어 있는지 확인합니다.
위에서 설명한 JSONToXML 정책을 수정하려면 아래와 같이 <OutputVariable>
요소를 포함합니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>Check-JSONToXML</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>response</OutputVariable>
<Source>PostalCode</Source>
</JSONToXML>
InCompatibleTypes
오류 코드
steps.json2xml.InCompatibleTypes
오류 응답 본문
{ "fault": { "faultstring": "JSONToXML[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.json2xml.InCompatibleTypes" } } }
오류 예시
{
"fault": {
"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.json2xml.InCompatibleTypes"
}
}
}
원인
이 오류는 <Source>
요소 및 <OutputVariable>
요소에 정의된 변수 유형이 동일하지 않을 때 발생합니다. <Source>
요소 및 <OutputVariable>
요소 내에 포함된 변수는 유형이 일치해야 합니다.
유효한 message
유형은 string
및 입니다.
진단
오류가 발생한 JSON to XML 정책을 식별합니다. 오류 응답의
faultstring
요소에서 확인할 수 있습니다. 예를 들어 다음faultstring
에서 정책 이름은JSONToXML_checktype
입니다."faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."
실패한 JSON to XML 정책에서
<OutputVariable>
및<Source>
에 지정된 값을 확인합니다.다음 정책 예시를 고려하세요.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML_checktype"> <DisplayName>JSONToXML_checktype</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>response</OutputVariable> <Source>PostalCode</Source> </JSONToXML>
<Source>
및<OutputVariable>
요소에 지정된 변수 유형을 확인합니다.- 각 프록시가 먼저 정의된 API 프록시 내에서 코드를 찾습니다.
- 변수가 먼저 정의되고 채워지는 정책을 확인한 후에는 해당 변수 유형을 다음과 같이 확인해야 합니다.
- 유형 속성의 값을 확인합니다(있는 경우).
- 유형 속성이 없으면 변수가 문자열로 간주됩니다.
<Source>
에 지정된 변수 유형이 문자열이고<OutputVariable>
유형이 메시지이거나 그 반대인 경우 이것이 오류의 원인입니다. 일반적인 변수 및 유형에 대해서 알아보려면 변수 참조를 확인하세요.
예를 들어, 아래와 같이
PostalCode
변수에 값을 할당하는 데 사용되는 메시지 할당 정책을 예로 들어 보겠습니다.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode"> <DisplayName>Assign_PostalCode</DisplayName> <Properties/> <AssignVariable> <Name>PostalCode</Name> <Value>{"value":"56008"}</Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<AssignVariable>
에 설정된 변수 유형은 문자열입니다. 따라서 변수PostalCode
는 문자열 유형입니다.PostalCode
변수는 JSONToXML 정책의<Source>
요소에 사용됩니다.<Source>PostalCode</Source>
마찬가지로
response
변수는 JSONToXML 정책의<OutputVariable>
요소에 사용됩니다.<OutputVariable>response</OutputVariable>
PostalCode
는 문자열 유형이고response
변수는 메시지 유형이므로 서로 호환되지 않은 유형이라서 다음과 같은 오류 코드가 수신됩니다.steps.json2xml.InCompatibleTypes
위 오류는
<Source>
요소의 변수가message
유형이지만<OutputVariable>
요소의 유형이 문자열 유형인 경우에도 발생할 수 있습니다.
해결 방법
<Source>
요소 및 <OutputVariable>
요소에 정의된 변수 유형이 항상 동일한지 확인하세요. <Source>
요소 및 <OutputVariable>
요소 내에 포함된 변수는 유형이 일치해야 합니다. 즉, <Source>
및 <OutputVariable>
요소의 유형이 문자열 또는 메시지 유형이어야 합니다.
위에서 설명한 JSON to XML 정책을 수정하려면 메시지 할당 정책을 사용하여 문자열 유형의 다른 PostalCode_output
변수를 선언하고 이 변수를 JSON to XML 정책의 <OutputVariable>
요소에 사용할 수 있습니다.
수정된 메시지 할당 정책:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode">
<DisplayName>Assign_PostalCode</DisplayName>
<Properties/>
<AssignVariable>
<Name>PostalCode</Name>
<Value>{"value":"56008"}</Value>
<Ref/>
</AssignVariable>
<AssignVariable>
<Name>PostalCode_output</Name>
<Ref/>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>
수정된 JSONToXML 정책:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>JSONToXML_checktype</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>PostalCode_output</OutputVariable>
<Source>PostalCode</Source>
</JSONToXML>
InvalidSourceType
오류 코드
steps.json2xml.InvalidSourceType
오류 응답 본문
{ "fault": { "faultstring": "JSONToXML[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.json2xml.InvalidSourceType" } } }
오류 예시
{
"fault": {
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string].",
"detail": {
"errorcode": "steps.json2xml.InvalidSourceType"
}
}
}
원인
이 오류는 <Source>
요소를 정의하기 위해 사용되는 변수 유형이 무효인 경우에 발생합니다. 유효한 변수 유형은 message
및 string
입니다.
진단
JSON to XML 정책에 사용된 잘못된 소스 유형을 식별합니다. 오류 메시지에서 이 정보를 확인할 수 있습니다. 예를 들어 다음 오류에서 무효한 유형은 정수입니다.
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
오류가 발생한 특정 API 프록시의 모든 JSON to XML 정책을 검사합니다. 실패한 JSON to XML 정책에서
<Source>
에 지정된 변수의 이름을 기록합니다.다음은
<Source>
요소에 지정된 EmployeeID 변수를 가진 샘플 정책입니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>Check_SourceType</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>request</OutputVariable>
<Source>EmployeeID</Source>
</JSONToXML>
<Source>
요소에 지정된 변수 유형을 확인합니다.- 이 변수가 먼저 정의된 API 프록시 내에서 코드를 찾습니다.
- 변수가 먼저 정의되고 채워지는 정책을 확인한 후에는 해당 변수 유형을 다음과 같이 확인해야 합니다.
- 유형 속성의 값을 확인합니다(있는 경우).
- 유형 속성이 없으면 변수가 문자열로 간주됩니다.
<Source>
에 지정된 변수의 유형이 메시지 유형도 문자열 유형도 아니면 이것이 오류의 원인입니다. 일반적인 변수 및 유형에 대해서 알아보려면 변수 참조를 확인하세요.
예를 들어 ExtractVariables 정책을 사용하여 JSON 페이로드에서 값을 추출하고 표시된 것처럼 정수 유형의
EmployeeID
변수로 값을 설정한다는 점을 고려해 보세요.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>request</Source> <JSONPayload> <Variable name="EmployeeID" type="integer"> <JSONPath>$.ID</JSONPath> </Variable> </JSONPayload> </ExtractVariables>
EmployeeID
변수는 JSONToXML 정책의<Source>
요소에 사용됩니다.<Source>EmployeeID</Source>
이 변수의 유형이 유효한
<Source>
유형이 아닌Integer
이므로, API 프록시가 오류로 실패합니다.steps.json2xml.InvalidSourceType
해결 방법
<Source>
요소를 지정하기 위해 사용되는 변수 유형이 유효한지 확인합니다. 유효한 <Source>
유형은 message
및 string
입니다.
JSONToXML 정책에서 위와 같은 오류를 방지하려면 메시지 유형의 요청 변수나 유효한 JSON 페이로드인 다른 문자열을 사용할 수 있습니다.