[英]Within an API defined with spring-integration declarative, how to get context information for exception messages?
[英]for GET Rest api call using spring-integration, how to read user defined headers?
MessageHeaders 具有預定義的標頭,例如 TIMESTAMP、ERROR_CHANNEL 等,但如何訪問用戶定義的 header? 我的 api 有 http://localhost:8082/load/1234567?source=ABC 和像 username:testuser 這樣的標題
message.getPayload() 只給了我這個 1234567 以便 header 不是有效負載的一部分,但是
Map<String, Object> headers = new HashMap<String, Object>();
Set<String> keys = message.getHeaders().keySet();
MessageHeaders msgHeader = message.getHeaders();
for(String key : keys) {
headers.put(key, msgHeader.get(key));
}
& headers.get("username") 返回 null。
有人可以幫忙嗎?
我希望你的意思是你在請求中設置了一個username
HTTP header。
HTTP 入站通道適配器(或網關)默認帶有DefaultHttpHeaderMapper
。 這個默認只做標准的 HTTP 請求頭映射:
private static final String[] HTTP_REQUEST_HEADER_NAMES =
{
HttpHeaders.ACCEPT,
HttpHeaders.ACCEPT_CHARSET,
HttpHeaders.ACCEPT_ENCODING,
HttpHeaders.ACCEPT_LANGUAGE,
HttpHeaders.ACCEPT_RANGES,
HttpHeaders.AUTHORIZATION,
HttpHeaders.CACHE_CONTROL,
HttpHeaders.CONNECTION,
HttpHeaders.CONTENT_LENGTH,
HttpHeaders.CONTENT_TYPE,
HttpHeaders.COOKIE,
HttpHeaders.DATE,
HttpHeaders.EXPECT,
HttpHeaders.FROM,
HttpHeaders.HOST,
HttpHeaders.IF_MATCH,
HttpHeaders.IF_MODIFIED_SINCE,
HttpHeaders.IF_NONE_MATCH,
HttpHeaders.IF_RANGE,
HttpHeaders.IF_UNMODIFIED_SINCE,
HttpHeaders.MAX_FORWARDS,
HttpHeaders.PRAGMA,
HttpHeaders.PROXY_AUTHORIZATION,
HttpHeaders.RANGE,
HttpHeaders.REFERER,
HttpHeaders.TE,
HttpHeaders.UPGRADE,
HttpHeaders.USER_AGENT,
HttpHeaders.VIA,
HttpHeaders.WARNING
};
要將您的自定義 header 包含到此通道適配器生成的消息中,您只需合並此配置選項:
/**
* Provide the pattern array for request headers to map.
* @param patterns the patterns for request headers to map.
* @return the current Spec.
* @see DefaultHttpHeaderMapper#setOutboundHeaderNames(String[])
*/
public S mappedRequestHeaders(String... patterns) {
並使用例如*
到 map 所有標題,或者如果您的要求僅對您的標題嚴格,則將它們的名稱傳遞到那里。
在文檔中查看更多信息: https://docs.spring.io/spring-integration/docs/current/reference/html/http.html#http-header-mapping
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.