第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何為@ResponseStatus 創(chuàng)建分支結(jié)果

如何為@ResponseStatus 創(chuàng)建分支結(jié)果

翻過高山走不出你 2023-02-23 17:41:53
使用@ResponseStatus 允許在 Spring 中設(shè)置 Rest 響應(yīng)的狀態(tài)。但是,如何將其用于可能來自同一請(qǐng)求的不同類型的狀態(tài)呢?例如,控制器中有一個(gè)方法可能會(huì)返回 200 或 404。我如何僅在一個(gè)方法中使用 @ResponseStatus 來定義這些狀態(tài)?
查看完整描述

4 回答

?
慕村225694

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊

通常你不會(huì)用@ResponseStatus. 相反,您可以用作ResponseEntity<...>方法的返回類型。如果退貨的“類型”可以改變,ResponseEntity<?>或者ResponseEntity<Object>也可以工作。


例如:


@GetMapping("/{key}")

public ResponseEntity<Thing> getThing(final @PathVariable String key) {

    final Thing theThing = this.thingService.get(key);


    final ResponseEntity<?> response;

    if (theThing.someProperty()) {

         response = ResponseEntity.ok(theThing);

    } else {

         response = ResponseEntity.status(HttpStatus.NOT_MODIFIED).body(null);

    }


    return response;

}


查看完整回答
反對(duì) 回復(fù) 2023-02-23
?
守著星空守著你

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊

要直接回答你的問題,@ResponseStatus 不能用于通過單一方法發(fā)送不同的狀態(tài)。

如果你使用@ResponseStatus,你如何處理多個(gè)狀態(tài)是:

  • @ResponseStatus用所需的2xx 注釋控制器方法HttpStatus。在成功場景中,此狀態(tài)將由控制器方法發(fā)送。通常它用于設(shè)置200HttpStatus以外的值(如201),因?yàn)榧词共皇褂?strong>200也是默認(rèn)發(fā)送的狀態(tài)。@ResponseStatus

  • 有帶有注釋的異常處理程序方法@ExceptionHandler,以處理不同的異常場景,也帶有@ResponseStatus相應(yīng)的注釋HttpStatus。例如,如果您想處理資源未找到的情況,則可以對(duì)異常處理程序方法進(jìn)行注釋@ResponseStatus(HttpStatus.NOT_FOUND)以發(fā)回404。

  • 如果您不需要發(fā)送動(dòng)態(tài)錯(cuò)誤響應(yīng),您甚至可以將自定義異常類與@ResponseStatusrequired 一起標(biāo)記HttpStatus,當(dāng)異常被拋出(而不是明確地捕獲和吞噬)時(shí),HttpStatus將返回相應(yīng)的異常。

您甚至可以利用ResponseEntitywhich 有一個(gè)方法,您可以在控制器方法或異常處理程序方法中status傳遞所需的并返回,如下所示:HttpStatus

控制器方法:

@GetMapping("/resource")

    public ResponseEntity<Object> getResource(){

        if(resourcePresent){

            return new ResponseEntity(resource, HttpStatus.OK);

        } else {

            return new ResponseEntity(HttpStatus.NOT_FOUND);

        }

    }

}

異常處理方法:


    @ExceptionHandler(BadRequestException.class)

    public ResponseEntity<Object> handleBadRequestException(BadRequestException exception){

        return new ResponseEntity<>(customResponse, HttpStatus.BAD_REQUEST);

    }


查看完整回答
反對(duì) 回復(fù) 2023-02-23
?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

我不確定這是否會(huì)回答你的問題,但你可以拋出一個(gè)ResponseStatusException你需要的狀態(tài)代碼。但是將它用于 200 會(huì)很奇怪。



查看完整回答
反對(duì) 回復(fù) 2023-02-23
?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊

您不能使用 @ResponseStatus 根據(jù)分支結(jié)果從一種方法設(shè)置不同的狀態(tài)代碼。

您將不得不返回一個(gè) ResponseEntity 或直接在您的方法中操作 HttpServletResponse(或者最終在異常處理程序返回狀態(tài)的錯(cuò)誤情況下拋出異常)


查看完整回答
反對(duì) 回復(fù) 2023-02-23
  • 4 回答
  • 0 關(guān)注
  • 159 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)