반응형
Spring Boot Rest 서비스 메서드에서 응답 헤더 값을 설정하려면 어떻게 해야 합니까?
초심자 질문...첫 봄 부츠 레스트풀 서비스를 만들고 있어요.restore 서비스 설계에서는 응답 헤더에 데이터를 반환해야 합니다.
컨트롤러 클래스의 메서드 내에서 응답 헤더 값을 설정하려면 어떻게 해야 합니까?
Spring 문서:
@RequestMapping("/handle")
public ResponseEntity<String> handle() {
URI location = ...;
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setLocation(location);
responseHeaders.set("MyResponseHeader", "MyValue");
return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED);
}
출처 : https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/ResponseEntity.html
다른 답변과 달리, 사용하지 마십시오.HttpServletResponse
회피할 수 있다면 저레벨 Servlet API로 작업하고 싶지 않을 것입니다.ResponseEntity 반환 또는HttpEntity
.
HttpHeaders headers = new HttpHeaders();
headers.add("1", "uno");
return new ResponseEntity<>(headers, HttpStatus.OK);
답을 찾고 있었는데, 응답 엔티티를 만들 필요가 없습니다.스프링 포룸에서 해결책을 찾았으니 작가님께 맡겨주세요.
즉, method-declaration으로 응답을 요구할 수 있습니다.이것에 의해, 이 정보가 입력됩니다.
간단한 예:
@RequestMapping(value="/car/{carId}", method = RequestMethod.Get)
@ResponseBody
public Car getCarById(@PathVariable("carId") String Id, HttpServletResponse response) {
response.setHeader("X-Special-Header", myCar.getEcoLabel());
//get the car
return myCar;
}
이것이 다른 사람들에게도 도움이 되기를 바랍니다.
응답 헤더를 설정하는 방법은 여러 가지가 있습니다.
- @Matias Elorriaga에서 언급했듯이 이를 사용하여 단일 응답에 헤더를 추가할 수 있습니다.
- 또는 모든 응답에 헤더를 추가하려면 Java 필터를 추가할 수도 있습니다.
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
@javax.servlet.annotation.WebFilter(urlPatterns = {"/*"})
@Component
public class ResponseHeaderFilter implements javax.servlet.Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse res = (HttpServletResponse) response;
res.setHeader("My-Custom-Header", "Header-Value-Here");
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
- 또는 Spring 5에서는 WebFilter를 사용하여 모든 응답에 헤더를 추가할 수도 있습니다.
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.WebFilterChain;
@Component
public class ResponseHeaderWebFilter implements WebFilter {
@Override
public Mono filter(ServerWebExchange exchange, WebFilterChain chain) {
exchange.getResponse().getHeaders().add("My-Custom-Header", "My-Value-Here");
return chain.filter(exchange);
}
}
언급URL : https://stackoverflow.com/questions/45152484/how-to-set-respond-header-values-in-spring-boot-rest-service-method
반응형
'programing' 카테고리의 다른 글
AngularJS Directive 요소 메서드 바인딩 - TypeError: 'in' 연산자를 사용하여 1에서 'functionName'을 검색할 수 없습니다. (0) | 2023.03.08 |
---|---|
게시 및 가져오기용 Ajax 튜토리얼 (0) | 2023.03.08 |
Oracle sql 쿼리에서 "Join"을 사용하여 삭제 (0) | 2023.03.08 |
순서 없이 동일한 속성을 가진 두 JSON을 비교하려면 어떻게 해야 합니까? (0) | 2023.03.08 |
도커의 Word press: 마운트된 볼륨에 디렉터리를 만들 수 없습니다. (0) | 2023.03.08 |