IT

Spring MVC 컨트롤러 메서드에서 값이 반환되지 않을 경우 반환되는 항목

itgroup 2022. 11. 27. 11:27
반응형

Spring MVC 컨트롤러 메서드에서 값이 반환되지 않을 경우 반환되는 항목

jQuery's를 사용하고 있습니다.$.getJSON()비동기 콜을 발신할 수 있습니다.대부분의 스프링 컨트롤러 방식은 다음과 같습니다.

@RequestMapping(value = "/someURL", method = RequestMethod.POST)
public @ResponseBody SomePOJO getSomeData(@ModelAttribute Widget widget,
    @RequestParam("type") String type) {
    return someDAO.getSomeData(widget, type);
}   

각 컨트롤러가 Return을 반환하도록 설정되어 있습니다.@ResponseBodyJSON으로서 클라이언트측에서 기대하는 것입니다.

그러나 요청이 클라이언트 측에 콘텐츠를 반환하지 않으면 어떻게 됩니까?다음을 얻을 수 있습니까?

@RequestMapping(value = "/updateSomeData" method = RequestMethod.POST)
public @ResponseBody void updateDataThatDoesntRequireClientToBeNotified(...) {
    ...
}

그렇지 않은 경우 여기서 사용하는 적절한 구문은 무엇입니까?

void를 반환하면 메서드를 @ResponseStatus(값 = HttpStatus)로 표시해야 합니다.OK) @Response Body는 필요 없습니다.

@RequestMapping(value = "/updateSomeData" method = RequestMethod.POST)
@ResponseStatus(value = HttpStatus.OK)
public void updateDataThatDoesntRequireClientToBeNotified(...) {
    ...
}

get 메서드만 200 상태 코드의 inclicity를 반환합니다.다른 모든 작업은 다음 세 가지 중 하나를 수행합니다.

  • void를 반환하고 메서드에 다음과 같이 표시합니다.@ResponseStatus(value = HttpStatus.OK)
  • Return 객체를 반환하고 마크를 붙입니다.@ResponseBody
  • 반환하다HttpEntity사례

적절한 헤더를 사용하여 ResponseEntity를 반환하기만 하면 됩니다.

@RequestMapping(value = "/updateSomeData" method = RequestMethod.POST)
public ResponseEntity updateDataThatDoesntRequireClientToBeNotified(...){
....
return new ResponseEntity(HttpStatus.OK)
}

ResponseEntity 개체를 반환할 수 있습니다.ResponseEntity 객체를 사용하면 응답 객체(응답 본문 및 HTTP 상태 코드 포함)를 구성할 때와 응답 객체에서 정보를 가져올 때 모두 매우 편리합니다.

getHeaders(), getBody(), getContentType(), getStatusCode() 등의 메서드를 사용하면 ResponseEntity 개체를 읽는 작업이 매우 쉬워집니다.

HTTP 상태 코드 204(No Content)의 ResponseEntity 개체를 사용해야 합니다.이것은 특히 요구가 올바르게 처리되어 응답 본문이 의도적으로 공백인 것을 지정하는 것입니다.적절한 상태 코드를 사용하여 올바른 정보를 전달하는 것은 매우 중요합니다.특히 여러 클라이언트애플리케이션에서 사용하는 API를 작성하는 경우에는 더욱 중요합니다.

네, @ResponseBody는 다음과 같이 사용할 수 있습니다.void반환 유형:

@RequestMapping(value = "/updateSomeData" method = RequestMethod.POST)
@ResponseBody
public void updateDataThatDoesntRequireClientToBeNotified(...) {
    ...
}

무효를 반환하는 것은 문제될 것이 없다.@ResponseBody그리고 당신은 다음을 위해POST요청한다.

다른 사람이 성공 상태를 언급하는 경우 예외 핸들러 루틴 내에서 오류를 정의하려면 HTTP 상태 코드를 사용합니다.일반적인 메서드는 다음과 같은 응답 코드를 반환합니다.200즉, 예외 핸들러는 오류 개체와 다른 코드(즉, 다른 코드)를 반환할 수 있습니다.500를 참조해 주세요.

그러나 시스템의 크기와 기능이 커짐에 따라...항상 json을 돌려주는 것도 나쁘지 않다고 생각해요.아키텍처/대규모 설계입니다.

코드와 데이터라는2개의 know 필드를 사용하여 항상 JSON을 재시도하는 것을 생각할 수 있습니다.여기서 code는 수행할 작업의 성공을 지정하는 숫자 코드이고 data는 요청된 작업/서비스와 관련된 모든 추가 데이터입니다.

서비스 프로바이더의 백엔드를 사용하면 모든 서비스가 정상적으로 동작했는지 확인할 수 있습니다.

따라서 스프링이 이를 관리하지 않도록 하이브리드 리턴 조작(데이터를 반환하지 않는 경우도 있습니다)을 공개함으로써 서버가 보다 균질한 인터페이스를 공개하도록 합니다.결국엔 더 간단해

언급URL : https://stackoverflow.com/questions/12837907/what-to-return-if-spring-mvc-controller-method-doesnt-return-value

반응형