搜尋
首頁web前端js教程用Express 4創建靜止的API

用Express 4創建靜止的API

>釋放Express 4,創建RESTFUL API變得更加容易。如果要創建一個單頁應用程序,則肯定需要一個支持CRUD操作的RESTFUL Web服務。我的最後一個教程重點是用Angular的$資源創建一個單頁CRUD應用程序。本教程說明瞭如何使用Express 4來設計此CRUD應用的後端API

>請注意,自Express 3以來,已更改了很多。本教程並未解釋如何將您的應用程序從Express 3升級到Express 4。相反,它將涵蓋如何直接使用Express 4創建API。所以,讓我們開始吧。

>

鑰匙要點

Express 4簡化了RESTFUL API的創建,使為Crud應用程序設計後端API變得更加容易。 > Express 4要求分別下載Body-Parser,因為它不再是Express Core的一部分。該模塊用於解析傳入的請求主體,允許通過req.body訪問郵政請求的正文。
  • express 4方法express.router()創建一個可以定義中間和路由的新路由器實例。然後可以像其他任何中間件一樣在主應用程序中使用此路由器實例。 Express 4支持標準的HTTP方法,例如GET,POST,PUT和DELETE,以在數據庫上執行CRUD操作,在這種情況下為電影數據庫。這是通過創建處理這些HTTP請求的路由來完成的。
  • >
  • 創建電影應用程序的API
  • 我們的應用程序將是一個支持基本CRUD操作的簡單電影數據庫。我們將Express 4用作Web框架,將Mongoosejs作為對象建模工具。為了存儲電影條目,我們將使用mongodb。
  • 在進一步前進之前,讓我們看看API的外觀:
  • >

目錄結構

我們將在應用程序中使用以下目錄結構:

用Express 4創建靜止的API

以上目錄結構有一些要點:

bin/www.js用於引導我們的應用程序。

>模型目錄存儲我們的貓鼬模型。對於此應用程序,我們只有一個名為Movie.js的文件。 用Express 4創建靜止的API

路線目錄將存儲所有快速路由。

>

app.js保存我們的Express App的配置。 >
    最後,node_modules和package.json是node.js app。
  1. 獲得必要的依賴項
  2. 為創建API,我們將使用以下模塊:>
  3. express
  4. >身體解析器
  5. mongoose

>注意 - 身體偏遠者不再是Express Core的一部分。您需要單獨下載該模塊。因此,我們已經在包裝中列出了它。

要獲取這些軟件包,我們將它們列為package.json中的依賴項。這是我們的軟件包。

<span>{
</span>  <span>"name": "Movie CRUD API",
</span>  <span>"version": "0.0.1",
</span>  <span>"private": true,
</span>  <span>"scripts": {
</span>    <span>"start": "node ./bin/www"
</span>  <span>},
</span>  <span>"main":"./bin/www",
</span>  <span>"engines": {
</span>     <span>"node": "0.10.x"
</span>   <span>},
</span>  <span>"dependencies": {
</span>    <span>"express": "~4.2.0",
</span>    <span>"body-parser": "~1.0.0",
</span>    <span>"mongoose": "~3.8.11"
</span>  <span>}
</span><span>}</span>
只需運行npm安裝,所有依賴項將被下載並放置在node_modules目錄下。

創建模型

>由於我們正在為電影數據庫構建API,因此我們將創建一個電影模型。創建一個名為Movie.js的文件,然後將其放入模型目錄中。該文件的內容(如下所示)創建了一個Mongoose模型。

>

<span>var mongoose=require('mongoose');
</span><span>var Schema=mongoose.<span>Schema</span>;
</span>
<span>var movieSchema = new Schema({
</span>  <span>title: String,
</span>  <span>releaseYear: String,
</span>  <span>director: String,
</span>  <span>genre: String
</span><span>});
</span>
module<span>.exports = mongoose.model('Movie', movieSchema);</span>
>在上一個片段中,我們創建了一個新型號,電影。每部電影都有與之相關的四個屬性 - 標題,發行年,導演和流派。最後,我們將模型放在模塊中。 exports,以便我們可以從外部訪問它。

>

創建路由

>我們的所有路線都在路線/電影中。首先,將以下內容添加到您的電影。

Express 4具有一個名為Express.Router()的新方法,該方法為我們提供了一個新的路由器實例。它可用於定義中間和路線。關於快速路由器的有趣觀點是它就像一個迷你應用程序一樣。您可以使用此路由器來定義中間Wares和路線,然後像其他任何中間件一樣在主應用中使用它。

獲得所有電影
<span>var Movie = require('../models/movie');
</span><span>var express = require('express');
</span><span>var router = express.<span>Router</span>();</span>

用戶將get請求發送到 /api /電影時,我們應該向他們發送包含所有電影的響應。這是為此創建路線的片段。

router.route()返回一個單個路由實例,該實例可用於配置一個或多個HTTP動詞。在這裡,我們要支持GET請求。因此,我們調用get()並傳遞回調,該回調將在請求到達時被調用。在回調中,我們使用Mongoose檢索所有電影,並將其發送回客戶端以JSON。

創建新電影

router<span>.route('/movies').get(function(req<span>, res</span>) {
</span>  <span>Movie.find(function(err<span>, movies</span>) {
</span>    <span>if (err) {
</span>      <span>return res.send(err);
</span>    <span>}
</span>
    res<span>.json(movies);
</span>  <span>});
</span><span>});</span>
>我們的API應在發布 /api /電影的發布請求時在數據庫中創建新電影。必須將JSON字符串作為請求主體發送。我們將使用相同的路線 /電影,但使用方法post()而不是get()。

這是代碼:

>在這裡,我們從請求主體創建了一個新的電影實例。這是使用身體較好者的地方。然後,我們只保存新電影並發送一個響應,表明操作成功。

>

請注意,方法get(),post()等。返回相同的路由實例。因此,您實際上可以鏈接前兩個電話,如下所示。

>
router<span>.route('/movies').post(function(req<span>, res</span>) {
</span>  <span>var movie = new Movie(req.body);
</span>
  movie<span>.save(function(err) {
</span>    <span>if (err) {
</span>      <span>return res.send(err);
</span>    <span>}
</span>
    res<span>.send({ message: 'Movie Added' });
</span>  <span>});
</span><span>});</span>

更新電影

如果用戶想更新電影,則需要將PUT請求發送到/api/Movie/:ID,並以JSON字符串作為請求主體。我們使用命名參數:ID訪問現有電影。當我們使用MongoDB時,我們所有的電影都有一個唯一的標識符,稱為_id。因此,我們只需要檢索參數:ID並使用它來查找特定的電影。執行此操作的代碼如下所示。

>
<span>{
</span>  <span>"name": "Movie CRUD API",
</span>  <span>"version": "0.0.1",
</span>  <span>"private": true,
</span>  <span>"scripts": {
</span>    <span>"start": "node ./bin/www"
</span>  <span>},
</span>  <span>"main":"./bin/www",
</span>  <span>"engines": {
</span>     <span>"node": "0.10.x"
</span>   <span>},
</span>  <span>"dependencies": {
</span>    <span>"express": "~4.2.0",
</span>    <span>"body-parser": "~1.0.0",
</span>    <span>"mongoose": "~3.8.11"
</span>  <span>}
</span><span>}</span>

>在這裡,我們創建一個新的路由 /電影 /:ID並使用方法put()。 Movie.findone的調用({_id:req.params.id})用於查找在URL中傳遞的ID的電影。有了電影實例後,我們將根據請求正文中的JSON進行更新。最後,我們保存了這部電影並向客戶發送回复。

>檢索電影

要閱讀一部電影,用戶需要將get請求發送到路由/api/movies/:id。我們將使用與上述相同的路線,但是這次使用get()。

>
<span>var mongoose=require('mongoose');
</span><span>var Schema=mongoose.<span>Schema</span>;
</span>
<span>var movieSchema = new Schema({
</span>  <span>title: String,
</span>  <span>releaseYear: String,
</span>  <span>director: String,
</span>  <span>genre: String
</span><span>});
</span>
module<span>.exports = mongoose.model('Movie', movieSchema);</span>

>代碼的其餘部分非常簡單。我們根據傳遞的ID檢索電影並將其發送給用戶。

>

刪除電影

要刪除電影,用戶應將刪除請求發送到/api/tovers/:id。同樣,該路線與上面相同,但是方法是不同的(即delete())。

>
<span>var Movie = require('../models/movie');
</span><span>var express = require('express');
</span><span>var router = express.<span>Router</span>();</span>

> Method Movie.Remove()從數據庫中刪除了一部電影,我們向用戶發送一條消息,指示成功。

>

>現在我們都設置了。但是等等!我們需要將路由器實例放在模塊中。 Exports,以便我們可以在應用中將其用作Middlewaree。因此,這是文件電影中的最後一行。

router<span>.route('/movies').get(function(req<span>, res</span>) {
</span>  <span>Movie.find(function(err<span>, movies</span>) {
</span>    <span>if (err) {
</span>      <span>return res.send(err);
</span>    <span>}
</span>
    res<span>.json(movies);
</span>  <span>});
</span><span>});</span>
>配置應用程序

我們所有的配置都進入app.js。我們首先需要必要的模塊:

router<span>.route('/movies').post(function(req<span>, res</span>) {
</span>  <span>var movie = new Movie(req.body);
</span>
  movie<span>.save(function(err) {
</span>    <span>if (err) {
</span>      <span>return res.send(err);
</span>    <span>}
</span>
    res<span>.send({ message: 'Movie Added' });
</span>  <span>});
</span><span>});</span>
下一步是通過mongoose連接到mongodb:

最後,我們配置了中間件:
router<span>.route('/movies')
</span>  <span>.get(function(req<span>, res</span>) {
</span>    <span>Movie.find(function(err<span>, movies</span>) {
</span>      <span>if (err) {
</span>        <span>return res.send(err);
</span>      <span>}
</span>
      res<span>.json(movies);
</span>    <span>});
</span>  <span>})
</span>  <span>.post(function(req<span>, res</span>) {
</span>    <span>var movie = new Movie(req.body);
</span>
    movie<span>.save(function(err) {
</span>      <span>if (err) {
</span>        <span>return res.send(err);
</span>      <span>}
</span>
      res<span>.send({ message: 'Movie Added' });
</span>    <span>});
</span>  <span>});</span>

如您所見,我像其他任何中間件一樣使用了路由器。我將 /API作為第一個參數to app.use(),以便將路由中間件映射到 /api。因此,最終我們的API URL變為:

router<span>.route('/movies/:id').put(function(req<span>,res</span>){
</span>  <span>Movie.findOne({ _id: req.params.id }, function(err<span>, movie</span>) {
</span>    <span>if (err) {
</span>      <span>return res.send(err);
</span>    <span>}
</span>
    <span>for (prop in req.body) {
</span>      movie<span>[prop] = req.body[prop];
</span>    <span>}
</span>
    <span>// save the movie
</span>    movie<span>.save(function(err) {
</span>      <span>if (err) {
</span>        <span>return res.send(err);
</span>      <span>}
</span>
      res<span>.json({ message: 'Movie updated!' });
</span>    <span>});
</span>  <span>});
</span><span>});</span>

/api/電影

    /api/movers/:id
  • >引導
以下代碼進入bin/www.js,bootstraps我們的應用程序:

通過運行節點bin/www.js,您的api應該升起!

router<span>.route('/movies/:id').get(function(req<span>, res</span>) {
</span>  <span>Movie.findOne({ _id: req.params.id}, function(err<span>, movie</span>) {
</span>    <span>if (err) {
</span>      <span>return res.send(err);
</span>    <span>}
</span>
    res<span>.json(movie);
</span>  <span>});
</span><span>});</span>
測試API

>現在我們已經創建了API,我們應該對其進行測試,以確保所有內容都按預期工作。您可以使用郵遞員(Chrome Extension)來測試所有端點。以下是一些屏幕截圖,顯示帖子並在Postman中進行了測試。

>

用Express 4創建靜止的API

結論用Express 4創建靜止的API

>這是如何通過節點和Express輕鬆創建Restful API的基本概述。如果您想深入研究Express,請務必查看他們的文檔。如果您想添加或詢問某些內容,請隨時發表評論。

該應用程序的源代碼可在GitHub上下載。 >

>經常詢問有關使用Express 4

創建RESTFUL API的問題(常見問題解答)

> RESTFUL API與其他類型的API之間有什麼區別?

RESTFUL API或代表性狀態轉移API是一種遵守REST架構風格原理的API。它們是無狀態的,這意味著從客戶端到服務器的每個請求都必須包含了解和處理請求所需的所有信息。這與其他類型的API不同,例如SOAP,這些API可以在請求之間保持狀態。 RESTFUL API還使用標準的HTTP方法,例如GET,POST,PUT,DELETE,使其易於理解和使用。 4,您可以使用app.get()方法創建基本路由。此方法採用兩個參數:路徑和回調函數。每當向指定路徑提出Get請求時,都會執行回調功能。這是一個示例:

app.get('/',function(req,res){

res.send('Hello world!');

});
在此示例中,向根路徑('/')提出了get請求,服務器將以“ Hello World!”響應“ Hello World!”。

如何處理Express 4?

發布請求Express 4,您可以使用app.post()方法。此方法與app.get()相似,但用於發布請求而不是獲得請求。以下是一個示例:

app.post('/',function(req,res){

res.send('post request rectory');

});
什麼是Express 4中的中間件,我如何使用它? >中間件功能是可以訪問請求對象(REQ),響應對象(RES)和應用程序請求響應週期中的下一個功能的函數。下一個功能是Express路由器中的一個函數,當調用時,該功能將執行成功當前中間件的中間件。中間件函數可以執行以下任務:執行任何代碼,對請求和響應對象進行更改,結束請求響應週期,調用堆棧中的下一個中間件。
如何處理Express中的錯誤4?

express 4提供了一個內置錯誤處理程序,該處理程序會處理應用程序中可能發生的任何錯誤。如果需要處理特定錯誤,則可以創建自己的錯誤處理中間件功能。以下是一個示例:

app.use(function(err,req,res,sext){

console.error(err.stack); });在此示例中,如果在應用中發生錯誤,則將記錄到控制台,服務器將以500的狀態代碼和一條消息響應'有些東西破裂! '。

>如何在Express 4個路由中使用參數?

您可以使用路由參數捕獲URL中的動態值。然後,您的路由處理程序可以使用這些值。這是一個示例:
app.get('//users/:userId',function(req,res){
res.send('用戶ID是:'req.params.userid);
} );
在此示例中,當向“/用戶/123”提出Get請求時,服務器將使用“用戶ID為:123”。 Express 4?

express 4提供了用於服務靜態文件的內置中間件功能,express.static()。您可以使用它從服務器上的目錄中使用文件。以下是一個示例:

app.use(express.static('public'));

在此示例中,可以直接從root url('/')中直接訪問'public''目錄中的文件。
>如何在Express 4? var bodyparser = require('body-parser');

app.use(bodyparser.json());

> app.use(bodyparser.urlenceded({extended:true }) );

在此示例中,將身體較低的中間件配置為解析JSON和URL編碼的身體。


>如何我是否可以在Express 4?

中處理404個錯誤,您可以通過在中間件堆棧的末尾添加中間件功能來處理404錯誤。如果沒有其他路由處理程序或中間件功能處理該請求,將執行此功能。這是一個示例:
app.use(function(req,res,sext){

res.status(404).send('對不起,我們找不到!');

}); 在此示例中,如果向不存在的路徑提出請求,則服務器將以404的狀態代碼響應,並發出一條“對不起,我們找不到的消息!”。我如何使用Express Express 4?


> Express路由器中的路由器是Express 4中的迷你應用程序,可讓您以模塊化的方式組織路線。您可以使用Express.Router()創建一個新路由器,向其添加中間件和路由,然後在App.use()中使用它。這是一個示例:
var router = express.router();
router.get('/',function(req,res){
res.send('Router!'Hello!') ;

});

app.use('/Router',Router);

在此示例中,當向'/Router提出GET請求時,服務器將響應“路由器的你好!” 。

以上是用Express 4創建靜止的API的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
在JavaScript中替換字符串字符在JavaScript中替換字符串字符Mar 11, 2025 am 12:07 AM

JavaScript字符串替換方法詳解及常見問題解答 本文將探討兩種在JavaScript中替換字符串字符的方法:在JavaScript代碼內部替換和在網頁HTML內部替換。 在JavaScript代碼內部替換字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 該方法僅替換第一個匹配項。要替換所有匹配項,需使用正則表達式並添加全局標誌g: str = str.replace(/fi

構建您自己的Ajax Web應用程序構建您自己的Ajax Web應用程序Mar 09, 2025 am 12:11 AM

因此,在這裡,您準備好了解所有稱為Ajax的東西。但是,到底是什麼? AJAX一詞是指用於創建動態,交互式Web內容的一系列寬鬆的技術。 Ajax一詞,最初由Jesse J創造

10個JQuery Fun and Games插件10個JQuery Fun and Games插件Mar 08, 2025 am 12:42 AM

10款趣味橫生的jQuery遊戲插件,讓您的網站更具吸引力,提升用戶粘性!雖然Flash仍然是開發休閒網頁遊戲的最佳軟件,但jQuery也能創造出令人驚喜的效果,雖然無法與純動作Flash遊戲媲美,但在某些情況下,您也能在瀏覽器中獲得意想不到的樂趣。 jQuery井字棋遊戲 遊戲編程的“Hello world”,現在有了jQuery版本。 源碼 jQuery瘋狂填詞遊戲 這是一個填空遊戲,由於不知道單詞的上下文,可能會產生一些古怪的結果。 源碼 jQuery掃雷遊戲

如何創建和發布自己的JavaScript庫?如何創建和發布自己的JavaScript庫?Mar 18, 2025 pm 03:12 PM

文章討論了創建,發布和維護JavaScript庫,專注於計劃,開發,測試,文檔和促銷策略。

jQuery視差教程 - 動畫標題背景jQuery視差教程 - 動畫標題背景Mar 08, 2025 am 12:39 AM

本教程演示瞭如何使用jQuery創建迷人的視差背景效果。 我們將構建一個帶有分層圖像的標題橫幅,從而創造出令人驚嘆的視覺深度。 更新的插件可與JQuery 1.6.4及更高版本一起使用。 下載

Matter.js入門:簡介Matter.js入門:簡介Mar 08, 2025 am 12:53 AM

Matter.js是一個用JavaScript編寫的2D剛體物理引擎。此庫可以幫助您輕鬆地在瀏覽器中模擬2D物理。它提供了許多功能,例如創建剛體並為其分配質量、面積或密度等物理屬性的能力。您還可以模擬不同類型的碰撞和力,例如重力摩擦力。 Matter.js支持所有主流瀏覽器。此外,它也適用於移動設備,因為它可以檢測觸摸並具有響應能力。所有這些功能都使其值得您投入時間學習如何使用該引擎,因為這樣您就可以輕鬆創建基於物理的2D遊戲或模擬。在本教程中,我將介紹此庫的基礎知識,包括其安裝和用法,並提供一

使用jQuery和Ajax自動刷新DIV內容使用jQuery和Ajax自動刷新DIV內容Mar 08, 2025 am 12:58 AM

本文演示瞭如何使用jQuery和ajax自動每5秒自動刷新DIV的內容。 該示例從RSS提要中獲取並顯示了最新的博客文章以及最後的刷新時間戳。 加載圖像是選擇

如何在瀏覽器中優化JavaScript代碼以進行性能?如何在瀏覽器中優化JavaScript代碼以進行性能?Mar 18, 2025 pm 03:14 PM

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
2 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
2 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。