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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

發(fā)送 DELETE 時實現(xiàn)狀態(tài) 200

發(fā)送 DELETE 時實現(xiàn)狀態(tài) 200

桃花長相依 2022-05-25 17:46:10
我想用 Spring Boot 實現(xiàn) DELETE 請求。我試過這個:@DeleteMapping("remove/{id}")    public ResponseEntity<?> remove(@PathVariable String id) {        return ResponseEntity.ok(transactionNotesService.delete(Long.valueOf(id)))                .orElseGet(() -> notFound().build());    }但我明白了The method ok(T) in the type ResponseEntity is not applicable for the arguments (void)。執(zhí)行 DELETE 時如何修改代碼以返回代碼 200?
查看完整描述

3 回答

?
LEATH

TA貢獻1936條經(jīng)驗 獲得超7個贊

根據(jù)HTTP 規(guī)范,您應(yīng)該始終擁有一個狀態(tài)為 200 的正文。

10.2.1 200 正常

請求已成功。響應(yīng)返回的信息取決于請求中使用的方法,例如:

GET 在響應(yīng)中發(fā)送與請求的資源對應(yīng)的實體;

HEAD 請求資源對應(yīng)的實體頭字段在響應(yīng)中發(fā)送,不帶任何消息體;

POST 描述或包含操作結(jié)果的實體;

TRACE 包含終端服務(wù)器收到的請求消息的實體。

您應(yīng)該改用狀態(tài) 204(無內(nèi)容),它不帶正文參數(shù)。

10.2.5 204 無內(nèi)容

服務(wù)器已完成請求,但不需要返回實體主體,并且可能希望返回更新的元信息。響應(yīng)可能包括實體頭形式的新的或更新的元信息,如果存在,應(yīng)該與請求的變體相關(guān)聯(lián)。

如果客戶端是用戶代理,它不應(yīng)該改變導(dǎo)致請求被發(fā)送的文檔視圖。這個響應(yīng)主要是為了允許輸入動作發(fā)生而不導(dǎo)致用戶代理的活動文檔視圖發(fā)生變化,盡管任何新的或更新的元信息應(yīng)該應(yīng)用于當(dāng)前在用戶代理的活動視圖中的文檔。

204 響應(yīng)不能包含消息體,因此總是由頭字段之后的第一個空行終止。

transactionNotesService.delete(Long.valueOf(id));
return ResponseEntity.noContent().build();


查看完整回答
反對 回復(fù) 2022-05-25
?
大話西游666

TA貢獻1817條經(jīng)驗 獲得超14個贊

這里的問題是您混淆了 ResponseEntity.ok() 和 ResponseEntity.ok(T t) 其中 t 是您希望返回的內(nèi)容。


如果 transactionNotesService.delete 或 notFound().build 具有 void 作為返回類型,那么您不能將它們用作返回值,因為它們沒有值。我猜你的意思是這樣的:


@DeleteMapping("remove/{id}")

public ResponseEntity<?> remove(@PathVariable String id) {

    transactionNotesService.delete(Long.valueOf(id));

    return ResponseEntity.noContent();

}


查看完整回答
反對 回復(fù) 2022-05-25
?
蕭十郎

TA貢獻1815條經(jīng)驗 獲得超13個贊

在您的情況下,您可能會返回 200 或 204(202 用于異步/正在進行的刪除),如MDN 文檔所述:

如果成功應(yīng)用 DELETE 方法,則可能有幾個響應(yīng)狀態(tài)代碼:

如果操作可能會成功但尚未執(zhí)行,則為 202(已接受)狀態(tài)代碼。

204(無內(nèi)容)狀態(tài)代碼,如果已執(zhí)行操作且無需提供更多信息。

200(OK)狀態(tài)碼,如果動作已經(jīng)執(zhí)行并且響應(yīng)消息包含描述狀態(tài)的表示。

對于204你想要的是:

return ResponseEntity.noContent().build();

例如200,您想要的是:

return ResponseEntity.ok("Entity deleted");

代碼更改返回204

在您的實際代碼中,該orElseGet()部分不應(yīng)編譯,因為ok()不返回Optional.
要處理客戶端傳遞的 id 與任何現(xiàn)有實體沒有任何匹配的情況,您可以捕獲EmptyResultDataAccessExceptionJpaRepository.deleteById().
例如 :

@DeleteMapping("remove/{id}")

public ResponseEntity<?> remove(@PathVariable String id) {

  try{

    transactionNotesService.delete(Long.valueOf(id)); 

    return ResponseEntity.noContent().build();        

   }

   catch (EmptyResultDataAccessException e){

      return ResponseEntity.notFound().build();

  }                                

 }


查看完整回答
反對 回復(fù) 2022-05-25
  • 3 回答
  • 0 關(guān)注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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