url에 데이터를 붙여서 전송
-> 데이터 길이에 제한이 있음. 상대적으로 보안에 취약
body에 데이터를 담아서 전송
-> Content-type에 데이터 타입 명시, 데이터 길이 제한 없음
form-data 형태로 보내주는 방법만 가능한 듯 하다.
글 + 파일
물리적 파일 저장
파일 정보 저장
글 저장
우선 HttpEntity는 Http 요청이나 응답에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스
ResponseEntity는 HttpEntity를 구현.
HttpStatus, HttpHeader, HttpBody를 포함한다. HttpEntity와 달리 HttpStatus가 추가됨. RestTemplate에서 주로 사용된다
응답 자체의 독립된 값이나 표현 형태라고 생각하면 된다.
RestTemplate
Rest API 호출 이후 응답을 받을 때까지 기다리는 동기 방식.
사용 예.
private static RestTemplate restTemplate;
public static ResponseEntity<SubmtData> sendEngine(){
int subNum = 123;
int pNum = 1;
Object pCode = "코드";
SubmitData requestDto = SubmitData.builder()
.subNum(subNum)
.pNum(pNum)
.pCode(pCode)
.build();
HttpStatus headers = new HttpHeaders();
headers.add("Content-Type", "applicatino/json");
HttpEntity<SubmitData> entity = new HttpEntity<>(requestDto, headers);
String url = "http://localhost:8080/send";
return restTemplate.exchange(url, HttpMethod.POST, entity, SubmitData.class);
}
MimeType의 서브클래스. 인터넷에 전달되는 파일 포맷과 포맷 컨텐츠를 위한 식별자.
MimeType: 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 매커니즘.
마임 타입 중 application/octet-stream : text/plain을 제외한 다른 모든 경우를 위한 기본값.
String ext = filename.substring(filename.lastIndexOf(".")+1, filename.length());
final String[] BAD_EXTENSION = {"..."};
try {
int len = BAD_EXTENSION.length;
for(int i = 0; i < len; i++) {
if(extension.equalsIgnoreCase(BAD_EXTENSION[i])) {
throw new IOException("BAD Extension");
}
}
}catch (Exception e) {
e.printStackTrace();
}
https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types