티스토리 뷰
반응형
브라우저에서 보안상의 이유로 하나의 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 |
---|---|
torch 에서 GPU 인식 안될때 조치법 (0) | 2022.09.22 |
Ubuntu에서 Docker를 이용한 GPU 개발 환경 설정 (0) | 2020.09.29 |
스프링부트 소개 (0) | 2020.03.02 |
MySQL, Maria DB 백업 쉘 스크립트 (0) | 2020.03.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- 114,548
- Today
- 5
- Yesterday
- 89
링크
TAG
- Spring boot
- 한달살이
- dual
- DB백업
- cuda
- GPU
- 리치유클래시아
- 제주아쿠아플래닛
- thymeleaf
- WolfNCU
- 환경설정
- 타임리프
- 외부서버연동
- 성산일출봉
- 이중반복
- 울프프로그램
- 우분투#한글
- 오조리해변
- torch
- 우도
- loop
- 제주도한달살기
- proxy
- DBBackup
- 광치기해변
- Delta
- NCU
- 울프NCU
- Kossel
- 스프링부트