티스토리 뷰
반응형
브라우저에서 보안상의 이유로 하나의 HTML에 다른 서버의 URL 호출이 불가능 하게 설정되어 있습니다. 외부서버(DJango등 다른 종류의 서버도 가능) 호출이 필요할 때 경로에 "proxy" 를 삽입하면 해당 application.properties 에 정의한 서버로 전환시켜 주는 기능입니다.
- http://localhost:8080/prediction/proxy/AAA -> http://165.246.xxx.xxx:8000/AAA
이 기능의 문제점은 외부서버에서 받은 내용(JSon) 등이 다시 재가공 되면서 length 가 틀어지는 문제가 있을 수 있습니다. 특히 DJango 등 JSon 처리 방식이 스프링부트와 다를때 문제가 발생하는 것으로, 재가공 하는 기능을 막는 방법은 아직 찾지 못하였으나 DJango 에서 결과 리턴할때 방식을 변경하여 해결이 가능하리라 생각됩니다.
application.properties:
#DJango API 서버
django.deepcredit.server=165.246.xxx.xxx:8000
controller:
package com.qhedge.online.deepCredit.controller;
@Slf4j
@Controller
@PropertySource("classpath:/application.properties")
public class DeepCreditController {
private String prefix="/deepCredit/proxy";
@Autowired
@Value("${django.deepcredit.server}")
public String server;
@Autowired
private DeepCreditService deepCreditService;
void setHeaders(ProxyExchange<?> proxy) {
proxy.header("proxy", "DeepCredit");
}
@GetMapping("/deepCredit/proxy/**")
public ResponseEntity<?> proxyPathGet(@RequestParam MultiValueMap<String, String> allParams, ProxyExchange<?> proxy) throws Exception {
String path = proxy.path(prefix);
proxy.header("Cache-Control", "no-cache");
proxy.header("dataType", "");
setHeaders(proxy);
UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("http://" + server + path).queryParams(allParams).build();
return proxy.uri(uriComponents.toUri().toString()).get();
}
@DeleteMapping("/deepCredit/proxy/**")
public ResponseEntity<?> proxyPathDel(@RequestParam MultiValueMap<String, String> allParams, ProxyExchange<?> proxy) throws Exception {
String path = proxy.path(prefix);
proxy.header("Cache-Control", "no-cache");
setHeaders(proxy);
UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("http://" + server + path).queryParams(allParams).build();
return proxy.uri(uriComponents.toUri().toString()).delete();
}
@PutMapping("/deepCredit/proxy/**")
public ResponseEntity<?> proxyPathPut(ProxyExchange<?> proxy)
throws Exception {
String path = proxy.path(prefix);
setHeaders(proxy);
return proxy.uri("http://" + server + path).put();
}
@PostMapping("/deepCredit/proxy/**")
public ResponseEntity<?> proxyPathPost(ProxyExchange<?> proxy)
throws Exception {
String path = proxy.path(prefix);
setHeaders(proxy);
return proxy.uri("http://" + server + path).post();
}
/**
* 데이터 관리
*
* @return mv
* @throws Exception
*/
@RequestMapping("/deepCredit/dataMgmt.do")
public ModelAndView dataStatistic() throws Exception {
ModelAndView mv = new ModelAndView("deepCredit/dataMgmt");
List<DatasetVersionDto> datasetVersionList = deepCreditService.selectDatasetVerionList();
mv.addObject("datasetVersionList", datasetVersionList);
return mv;
}
}
반응형
'프로그램 > 스프링' 카테고리의 다른 글
타임리프(Thymeleaf) 이중 반복 (2) | 2022.10.11 |
---|---|
스프링부트 소개 (0) | 2020.03.02 |
스프링부트 환경설정 (0) | 2019.11.01 |
JadClipse 설치 (0) | 2016.04.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- 118,871
- Today
- 2
- Yesterday
- 34
링크
TAG
- WolfNCU
- 이중반복
- cuda
- 제주아쿠아플래닛
- docker
- MySQL
- maria
- Kossel
- DBBackup
- thymeleaf
- 마리아DB
- outfile
- 한달살이
- NCU
- 리치유클래시아
- 오조리해변
- 1.7.4.0
- MariaDB
- 다중접속
- RAPIDS
- RAPIDSAI
- 라인수
- 외부서버연동
- 우분투#한글
- 스프링부트
- 제주도한달살기
- Spring boot
- GPU
- 울프프로그램
- 도커