日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rest端点_REST:使用Controller端点?

發(fā)布時(shí)間:2023/12/3 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rest端点_REST:使用Controller端点? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

rest端點(diǎn)

在一般的REST架構(gòu)中,基本概念是資源。 在資源之后,下一步是為這些資源開發(fā)一個(gè)統(tǒng)一接口,這在HTTP領(lǐng)域通常意味著:

  • 創(chuàng)建為POST
  • 閱讀就是GET
  • 更新為PUT(或部分更新為PATCH)
  • 刪除已刪除

在現(xiàn)實(shí)世界中,不可避免地某些操作不會(huì)很好地映射到資源。 通常這是少數(shù)操作,例如重置密碼。 可以將它們建模為

  • 在/ password /上的PUT

或作為

  • 控制器端點(diǎn)和到/ resetpassword的POST

后者可能被認(rèn)為比純REST更接近于編程REST,但是有時(shí)客戶和客戶希望您務(wù)實(shí)。 本文提供了有關(guān)何時(shí)考慮使用Controller選項(xiàng)的建議。

動(dòng)作是否映射到CRUD?

現(xiàn)實(shí)應(yīng)用程序中的幾個(gè)動(dòng)作不能很好地映射到CRUD。 例如,貝寶的取消計(jì)費(fèi)協(xié)議API是:

POST /v1/payments/billing-agreements/agreement_id/cancel

取消動(dòng)作很少能很好地映射到資源的CRUD。 它可以解釋為:

  • 一些資源被創(chuàng)建(取消記錄)
  • 一些資源被更新(某些狀態(tài)列可能被設(shè)置為取消)
  • 或某些資源被刪除(訂單請求被刪除)。

客戶為什么要關(guān)心取消的處理方式? 難道它總是會(huì)改變嗎? 在某些情況下,使用HTTP隧道的API不能很好地映射到CRUD問題。 在取消帳單協(xié)議中,這將是:

POST /v1/payments/billing-agreements/agreement_id

與身體:

{"operation":"cancel" }

這被認(rèn)為是反模式,決不能使用。 而是應(yīng)使用控制器端點(diǎn)。

資源狀態(tài)或工作流?

在REST體系結(jié)構(gòu)中,客戶端或服務(wù)器之間的每個(gè)請求通常都會(huì)更改資源狀態(tài)(寫操作)或應(yīng)用程序狀態(tài)(查詢或讀操作)。 但是,在現(xiàn)實(shí)世界中,工作流是不可避免的。 例如,重置密碼流程通常包括:

  • 向用戶詢問userId(通常是電子郵件)
  • 系統(tǒng)檢查系統(tǒng)上是否存在電子郵件
  • 向用戶發(fā)送包含重置密碼鏈接的電子郵件
  • 確保用戶只有一定時(shí)間才能單擊鏈接
  • 當(dāng)用戶單擊鏈接時(shí),他們可能會(huì)被問到一系列問題
  • 他們將被要求重新輸入新密碼,以確保沒有錯(cuò)字

當(dāng)客戶端操作是復(fù)雜工作流的一部分時(shí),資源狀態(tài)和應(yīng)用程序狀態(tài)更改可能不容易建模。 它們可能不會(huì)同步發(fā)生,并且可能會(huì)根據(jù)工作流的建模方式或何時(shí)需要添加額外的步驟進(jìn)行更改。 在這種情況下,請考慮使用控制器端點(diǎn)。

無需PUT的REST

在某些情況下,可以設(shè)置參數(shù)以避免使用PUT,而可以使用POST到另一個(gè)表示意圖的端點(diǎn)。 例如,要更改地址而不是將PUT調(diào)用到/ address /,客戶端將調(diào)用POST到/ changeaddress并完全避免使用PUT。 這里的想法是使命令/查詢分離更嚴(yán)格。 有關(guān)更多信息,請參見https://www.thoughtworks.com/insights/blog/rest-api-design-resource-modeling。 通常,建議使用PUT / PATCH進(jìn)行更新/部分更新,并且僅在前兩個(gè)原因之一適用時(shí)才使用控制器端點(diǎn)。

那么,為什么何時(shí)使用控制器樣式終結(jié)點(diǎn)可能涉及主觀性。 以上至少可以幫助您做出決定。 請記住,在您考慮采用這種方法的情況下,它應(yīng)該永遠(yuǎn)只是少數(shù)API。 您在常規(guī)的Uniform Interface之外,無法進(jìn)行獨(dú)特的樣式操作,但是您仍然希望使它們對API的客戶來說很直觀。

翻譯自: https://www.javacodegeeks.com/2018/05/rest-using-a-controller-endpoint.html

rest端點(diǎn)

總結(jié)

以上是生活随笔為你收集整理的rest端点_REST:使用Controller端点?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。