我可以在 http 通道入站适配器状态代码表达式中访问 headers 吗?
Can I access headers in http channel inbound adapter status code expression?
我有一个这样配置的 HTTP 入站通道适配器:
<int-http:inbound-channel-adapter id="/api/requests"
channel="httpRequestsChannel"
path="/requests"
supported-methods="POST,OPTIONS">
<int-http:cross-origin allow-credentials="false" allowed-headers="*" origin="*" />
</int-http:inbound-channel-adapter>
我想让它回复 201 到 POST
请求和 200 回复其他请求(即 OPTIONS
),但是 none of:
headers.get('http_requestMethod').equals("POST") ? 201 : 200
:headers[http_requestMethod].equals("POST") ? 201 : 200
"POST".equals(:headers['http_requestMethod']) ? 201 : 200
对于 status-code-expression
属性有效,它们中的大多数以失败的上下文初始化结束:
IllegalStateException: No node
我是不是在这里使用了错误的语法,或者那些细节在那个阶段不可用?
我看到 this question 建议使用网关,但我现在想坚持使用适配器。
该表达式无法访问 requestMessage
。但它确实可能是有道理的。随时就此事提出 JIRA。
为了解决您的问题,我建议像这样配置它:
status-code-expression="T(org.springframework.web.context.request.RequestContextHolder).requestAttributes.request.method.equals('POST') ? 201 : 200"
我有一个这样配置的 HTTP 入站通道适配器:
<int-http:inbound-channel-adapter id="/api/requests"
channel="httpRequestsChannel"
path="/requests"
supported-methods="POST,OPTIONS">
<int-http:cross-origin allow-credentials="false" allowed-headers="*" origin="*" />
</int-http:inbound-channel-adapter>
我想让它回复 201 到 POST
请求和 200 回复其他请求(即 OPTIONS
),但是 none of:
headers.get('http_requestMethod').equals("POST") ? 201 : 200
:headers[http_requestMethod].equals("POST") ? 201 : 200
"POST".equals(:headers['http_requestMethod']) ? 201 : 200
对于 status-code-expression
属性有效,它们中的大多数以失败的上下文初始化结束:
IllegalStateException: No node
我是不是在这里使用了错误的语法,或者那些细节在那个阶段不可用?
我看到 this question 建议使用网关,但我现在想坚持使用适配器。
该表达式无法访问 requestMessage
。但它确实可能是有道理的。随时就此事提出 JIRA。
为了解决您的问题,我建议像这样配置它:
status-code-expression="T(org.springframework.web.context.request.RequestContextHolder).requestAttributes.request.method.equals('POST') ? 201 : 200"