2016-08-14 55 views
0

我發現很難正確理解REST(ASP.NET Core API)和AngularJS是如何結合在一起的。我也很難找到控制器和API之間的區別。 我觀看了有關ASP.NET核心Web應用程序的視頻: https://app.pluralsight.com/library/courses/aspdotnetcore-efcore-bootstrap-angular-web-app/table-of-contents 視頻顯示瞭如何使用ViewModel和屬性來驗證它,以服務器端爲例,創建純HTML聯繫人表單。 然後,其他模塊顯示如何創建一個AngularJS類型的窗體,並驗證客戶端。 我覺得很難理解爲什麼驗證應該是客戶端(代碼重複...)。 在我看來,所有的「剃刀」的力量,因爲C#語言被Angular取代..? 我希望我能正確解釋自己。如何理解像REST和AngularJS這樣的概念

回答

3

的Web API

提供的數據。

Web API的作用是簡單地向消費者提供數據。假設您正在構建博客,並且您希望將所有作者和博客文章存儲在SQL數據庫中。如果您只是讓瀏覽器(您的客戶端JavaScript)訪問數據庫以開始無條件地投擲博客帖子,那麼主要的安全漏洞就是。相反,將服務器端API放在瀏覽器JavaScript和後端SQL之間是一種常見做法。這就是API的用武之地。您的API只是坐在中間,並且知道如何檢索博客文章,插入新的博客文章等

數據顯示儀。

這是瀏覽器的javascript方面。既然我們有一個API位於我們和數據庫之間,我們所需要做的就是知道如何與API通信。當我們的頁面加載時,我們可以簡單地向API發送一個請求,其中包含如下內容:var posts = RetrieveBlogPosts();,或者RetrieveBlogPosts可以發送一個HTTP GET請求給我們的API在http://localhost:8000/api/posts。 API響應基於該路由的傳入請求,並確切知道要採用哪種服務器端方法。然後它進入數據庫,獲取博客文章,並將它們發回到在客戶端瀏覽器上運行的Angular應用程序。它發回的數據通常是JSON格式。然後,您的Angular應用程序將收到響應(JSON),將其轉換爲表示博客帖子的對象,然後在瀏覽器中顯示該數據(HTML模板/ css/etc)。

+0

嗨。我很熟悉這些重大差異。例如另一個問題:說我有客戶和訂單。 負責整合(數據處理)的部分是什麼? - 找到客戶A的訂單? API? Angular代碼? 常見的說API,但是,然後,每一件小事都需要接近服務器,等等...... –

+0

你想要在用戶瀏覽器中運行的前端JavaScript先獲取所有訂單,然後過濾到只有用戶的訂單?這意味着任何人都可以訪問每個人的訂單。每當某些事情不適合用戶時,它就不應該離開服務器。所以在這種情況下,API必須認證調用者並返回他們被允許看到的數據。 – juunas

+0

@juunas,我編輯了我的評論...但在auth成功後說。 –

-3

由於mariocatch已經很好地解釋了Api和Angular JS。我將闡明你的問題,爲什麼要在前端進行驗證?這完全是爲了性能而開發的。在大型應用程序中,性能很重要。因此,而不是檢查驗證條件類似

  • 電子郵件是正確的格式

  • 密碼必須至少6個字符

  • 密碼必須至少含有一個大寫字母

  • 密碼必須包含至少1個特殊字符

只要理性思考,爲什麼你想讓服務器參與所有這些驗證。現在,當網站擁有數百萬,數十億用戶時,服務器不能自由地進行這些驗證。所以這就是驗證移到客戶端的原因。是的,它取代了C#剃鬚刀的威力,但這顯然是爲了長期保持Web應用程序的良好性能。

我認爲這清除了您對客戶端驗證的困惑。

+2

服務器端驗證始終是強制性的。客戶端驗證對性能是有好處的,但是服務器端驗證仍然必須包含在內。沒有一個好的理由只做客戶端驗證。編程101是你不相信用戶輸入。 – juunas

+0

我明白了,所以,基本上,服務器端將提供API,然後使用Angular,我們將與它通信。 –

+0

我不是說應該排除服務器端驗證。如果您使用客戶端驗證,則可能需要在提交信息之前驗證服務器上的信息。但是,只有當客戶端通過客戶端的所有驗證並且大部分時間信息幾乎正確時纔會發生這種情況。 –