国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解如何在Angular優雅編寫HTTP請求

2024-05-06 15:27:31
字體:
來源:轉載
供稿:網友

引言

基本上當下的應用都會分為前端與后端,當然這種前端定義不在限于桌面瀏覽器、手機、APP等設備。一個良好的后端會通過一套所有前端都通用的 RESTful API 序列接口作為前后端之間的通信。

這其中對于身份認證都不可能再依賴傳統的Session或Cookie;轉而使用諸如OAuth2、JWT等這種更適合API接口的認證方式。當然本文并不討論如何去構建它們。

一、API 設計

首先雖然并不會討論身份認證的技術,但不管是OAuth2還是JWT本質上身份認證都全靠一個 Token 來維持;因此,下面統一以 token 來表示身份認證所需要的值。

一套合理的API規則,會讓前端編碼更優雅。因此,希望在編寫Angular之前,能與后端相互達成一種“協議”也很有必要。可以嘗試從以下幾點進行考慮。

版本號

可以在URL(例:https://demo.com/v1/)或Header(例:headers: { version: 'v1' } )中體現,相比較我更喜歡前者的直接。

業務節點

以一個節點來表示某個業務,比如:

商品 https://demo.com/v1/product/ 商品SKU https://demo.com/v1/product/sku/

動作

由HTTP動詞來表示:

GET 請求一個商品 /product/${ID} POST 新建一個商品 /product PUT 修改一個商品 /product/${ID} DELETE 刪除一個商品 /product/${ID}

統一響應

這一點非常重要,特別是當我們新建一個商品時,商品的屬性非常多,但如果我們缺少某個屬性時。可以使用這樣的一種統一的響應格式:

{  "code": 100, // 0 表示成功  "errors": { // 錯誤明細    "title": "商品名稱必填"  }}

其中 code 不管成功與否都會有該屬性。

狀態碼

后端響應一個請求是包括狀態碼和響應內容,而每一種狀態碼又包含著不同的含義。

200 成功返回請求數據 401 無權限 404 無效資源

二、如何訪問Http?

首先,需要導入 HttpClientModule 模塊。

import { HttpClientModule } from '@angular/common/http';@NgModule({  imports: [    HttpClientModule  ]})

然后,在組件類注入 HttpClient。

export class IndexComponent {  constructor(private http: HttpClient) { }}

最后,請求點擊某個按鈕發送一次GET請求。

user: Observable<User>;getUser() {  this.user = this.http.get<User>('/assets/data/user.json');}

打印結果:

{{ user | async | json }}

三個簡單的步驟,就是一個完整的HTTP請求步驟。

然后,現實與實際是有一些距離,比如說身份認證、錯誤處理、狀態碼處理等問題,在上面并無任何體現。

可,上面已經足夠優雅,要讓我破壞這種優雅那么此文就變得無意義了!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 高雄市| 沈阳市| 牟定县| 乌拉特前旗| 读书| 蒲江县| 正镶白旗| 沿河| 阿勒泰市| 化州市| 涞水县| 镶黄旗| 宣武区| 泾川县| 延安市| 吴川市| 金昌市| 洛宁县| 安泽县| 海丰县| 宣化县| 应用必备| 灌南县| 荔浦县| 张家口市| 姜堰市| 潢川县| 全州县| 永修县| 繁昌县| 靖西县| 德昌县| 枝江市| 建瓯市| 岢岚县| 诸暨市| 孟津县| 平武县| 德庆县| 武平县| 高尔夫|