티스토리 뷰
반응형
브라우저에서 보안상의 이유로 하나의 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
- Today
- Yesterday
링크
TAG
- maria
- Ignoring invalid distribution
- 리치유클래시아
- 1.7.4.0
- cuda
- scraperlink
- FX마진
- 사용자생성
- 라인수
- 제주아쿠아플래닛
- 울프프로그램
- 우분투
- 마진
- 도커
- fx
- 신약개발 AI 경진대회
- ta-lib
- DBBackup
- RAPIDSAI
- MySQL
- GPU
- docker
- pip check
- 오조리해변
- RAPIDS
- 스프링부트
- AI이미지생성
- 파이썬
- investy
- FX브로커
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함