NodeJS RESTful API

275 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

REST架构

REST表示代表性状态传输。REST是一种基于Web标准的架构,并使用HTTP协议。 它都是围绕着资源,其中每一个组件是资源和一个资源是由一个共同的接口使用HTTP的标准方法获得。

一个REST服务器只是提供的资源和REST客户端访问和使用HTTP协议修改的资源。这里每个资源由URI标识的/全局标识。其余部分使用各个表示形式表示相同的文字,JSON和XML资源;但JSON是最流行的一种。

HTTP方法

以下四个HTTP方法通常用在基于REST架构。

  • GET - 这是用来提供对资源的只读访问。
  • PUT - 这被用来创建新的资源。
  • DELETE - 这是用来删除资源。
  • POST - 这被用于更新现有资源或者创建新的资源。

RESTful Web服务

Web服务是用于交换应用程序或系统之间的数据开放的协议和标准的集合。写在各种编程语言和运行在不同平台上的软件应用程序可以使用Web服务来以类似于进程间通信在单台计算机上的方式通过计算机网络进行交换数据,如因特网。

基于REST架构的Web服务称为RESTful web服务。这些Web服务使用HTTP方法来实现REST架构的概念。

RESTful Web服务通常定义的URI,统一资源标识符一项服务,它提供资源表示,如JSON,并设置HTTP方法。

非Rest设计:

 http://localhost:8080/admin/getUser (查询用户)
 http://localhost:8080/admin/addUser (新增用户)
 http://localhost:8080/admin/updateUser (更新用户)
 http://localhost:8080/admin/deleteUser (删除用户)

Rest架构:

 GET http://localhost:8080/admin/user (查询用户)
 POST http://localhost:8080/admin/user (新增用户)
 PUT http://localhost:8080/admin/user (更新用户)
 DELETE http://localhost:8080/admin/user (删除用户)

为一个库创建RESTful

这个一个json数据集合,设置为userList.json。

 {
    "user1" : {
       "name" : "mahesh",
       "password" : "password1",
       "profession" : "teacher",
       "id": 1
    },
    "user2" : {
       "name" : "suresh",
       "password" : "password2",
       "profession" : "librarian",
       "id": 2
    },
    "user3" : {
       "name" : "ramesh",
       "password" : "password3",
       "profession" : "clerk",
       "id": 3
    }
 }

RESTful API

index.js

 var express = require("express"); 
 const { readFileSync } = require("fs");
 var app = express();
 ​
 //模拟数据源 用户列表
 let userList = readFileSync("userList.json");
 userList = JSON.parse(userList);
 ​
 app.get("/user", function (req, res) {
   //Restful Get方法,查找整个集合资源
   res.end(JSON.stringify(userList));
 });
 ​
 app.get("/user/:id", function (req, res) {
   //Restful Get方法,查找一个单一资源
   let u = userList.find((u) => u.id == req.params["id"]);
   res.end(JSON.stringify(u));
 });
 ​
 app.post("/user/", function (req, res) {
   //Restful Post方法,创建一个单一资源
 });
 ​
 app.put("/user/:id", function (req, res) {
   //Restful Put方法,更新一个单一资源
 });
 ​
 app.delete("/user/:id", function (req, res) {
   //Restful Delete方法,删除一个单一资源
 ​
 }); 
 ​
 app.listen(8080);