Sudip Bolakhe:
私はマイクロサービスアーキテクチャに取り組んでいます。私は別のドメイン名を持つ3種類のアプリケーションがあります。仮定アプリケーション1は、APIがあります。
"/app/foo-bar"
このAPIは、アプリケーション2のいくつかのサービスから呼び出され、サービスはまた、いくつかのAPIによってトリガーされます。このAPIは、アプリケーション3から呼び出すことができます。
私は今、必要なのAPIは、アプリケーション1に呼び出されたとき、私はそれが呼び出されたアプリケーションから知りたい、です。(アプリケーション2またはアプリケーション3のドメイン名)
私はこれを試してみました:
request.getHeader("referer");
しかし、これに戻り、私はヌル
これを解決する方法はありますか?
メリーランド州。Sajedulカリム:
あなたは、呼び出し元の起源のためにそのAPIのヘッダを取得する必要がAPI.Alsoの呼び出し中に、設定されたヘッダに持っています。
APIの呼び出し時に設定ヘッダ:app/foo-bar
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("referer", "APP_1");
HttpEntity<String> entity = new HttpEntity<String>("parameters", headers);
ヘッダー内のAPIを取得
@RequestMapping(value = "/app/foo-bar")
public String serveRest(@RequestBody String body, @RequestHeader HttpHeaders headers) {
List<String> parameters = headers.get("parameters");
String referer = null;
for (String header : parameters) {
if (header.equals("referer")) {
referer = header;
}
}
System.out.println(referer);
return referer;
}
ここでは輸入品です。
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;