1. 程式人生 > >node.js專案改進之restful API介面支援

node.js專案改進之restful API介面支援

神奇的restful規範

建立restfulAPI模組

這個模組的作用主要是做一些前置操作和指引,並且規範路徑,同時對錯誤進行初步處理

app_need/restfulAPI.js

'use strict';
module.exports = {
    APIError: function (code, message) {//編輯資料code和message
        this.code = code || 'internal:unknown_error';
        this.message = message || '';
    },
    restify: (pathPrefix) => {//生成前置中介軟體,
pathPrefix = pathPrefix || '/api';//如果不傳資料則預設路徑 return async (ctx, next) => { //在指定目錄下才生效 if (ctx.request.path.startsWith(pathPrefix)) { // 繫結rest()方法: ctx.rest = (data) => { ctx.response.status = 200; ctx.response.type = 'application/json'
; ctx.response.body = data; } try { //正常情況是上面的繫結ctx await next(); } catch (e) { // 非正常情況下是下面的繫結ctx ctx.response.status = 400; ctx.response.type = 'application/json'
; ctx.response.body = { code: e.code || 'internal:unknown_error', message: e.message || '' }; } } else { await next(); } }; } };

在app.js引用

app.js

const rest=require('./app_need/restfulAPI');
app.use(rest.restify('/api'));//使用中介軟體寫法,並且宣告api介面的路徑

編寫api路由

routes/api_user.js

'use strict';
const router = require('koa-router')();
router.prefix('/api/user');

router.get('/:id', function (ctx, next) {//定義讀取
    console.log(ctx.params.id);
    ctx.rest({ data: 'api_user介面介面get' });
});
router.post('/:id', function (ctx, next) {//定義增加
    console.log(ctx.params.id);
    ctx.rest({ data: 'api_user介面介面post' });
});
router.put('/:id', function (ctx, next) {//定義更新
    console.log(ctx.params.id);
    ctx.rest({ data: 'api_user介面介面put' });
});
router.del('/:id', function (ctx, next) {//定義刪除
    console.log(ctx.params.id);
    ctx.rest({ data: 'api_user介面介面del' });
});
router.patch('/:id', function (ctx, next) {//定義區域性更新
    console.log(ctx.params.id);
    ctx.rest({ data: 'api_user介面介面patch' });
});
module.exports = router;
最終專案地址:https://github.com/jijuxie/koa2_all.git

相關推薦

node.js專案改進restful API介面支援

神奇的restful規範 建立restfulAPI模組 這個模組的作用主要是做一些前置操作和指引,並且規範路徑,同時對錯誤進行初步處理 app_need/restfulAPI.js

node.js專案改進日誌系統

專案自帶的日誌模組koa-logger 專案自帶的日誌系統是很給力的,我們隨便啟動一下下程式,請求一下地址我們就會看到控制檯上出現一堆GET啊啥的是這樣的 logger 超級簡單明瞭,通俗易懂,上面的輸出就是有一個GET請求請求了/目錄,然後處理這

使用Node.js寫一個簡單的api介面

引入Http模組 預設你已經安裝了Node.js Node當中內建了Http模組; 可以使用 var http= require("http"); 複製程式碼 引入http模組; Hello world 用Node.js實現一個HTTP伺服器程式非常簡單。我們實現一個最簡單的Web程式, 它對於所有請

微軟與Node.js的開源

支持 全球 tro 更多 工具和平臺 .cn 我們 images tell 微軟近年來在開源領域可謂是大刀闊斧的前進中,繼2015年微軟與紅帽合作,微軟智能雲Azure與Linux進一步融合等舉措之後,2016年,微軟繼續加大開源之舉,大力推進Node.js的開發和開源社區

Spring mvcRestful API

clas 處的 ati code ans 指定 reat get 不能 Spring mvc之Restful API 這是一個路徑,http://127.0.0.1:8080/OperationAPI/v0.1/pins/3是API的具體網址。在RESTful架構中,每個網

五個最佳案例帶你解讀Node.js的前後

個推 web服務 SegmentFault D-Day Node.js 是什麽?Node.js采用C++語言編寫而成,瀏覽器內核V8做為執行引擎;Node不是JS應用、而是一個Javascript的運行環境。Node保留了前端瀏覽器js的接口,沒有改寫語言本身的任何特性,依舊基於作用域和原型鏈。

Node.js知識點整理----基礎知識----事件處理機制及事件環機制

node 應用程序 nod eat 回調函數 clas 對象 繼續 知識 在event模塊中,定義了EventEmitter類,所有觸發事件的對象都是繼承了這個類的子類的實例對象。 addListener(event,listener) 對指定事件綁定事件處理函數 on

Node.js知識點整理----基礎知識----console(控制臺)

輸出流 輸出結果 err 顯示 info 定向 文件中 world 字符 console.log() 用於進行標準輸出流的輸出,即在控制臺中顯示一行字符串 console.log(‘this is a message.‘) 可以將它重寫向輸出到文件中,1代表重定向標

Node.js專案

這裡mongose語言可以參考https://www.jianshu.com/p/2f54b90efe15 首先配置好入口檔案app.js app.js中比較重要的兩個模組是express  swig(用於解析模板內容) 檔案解析模板swig的配置

整合swagger2生成Restful Api介面文件 webapi文件描述-swagger

整合swagger2生成Restful Api介面文件 swagger Restful文件生成工具 2017-9-30 官方地址:https://swagger.io/docs/specification/about/ 官方Github:https://github.com/swagger-

CHENGDU3-Restful API 介面規範、django-rest-framework框架

  Restful API 介面規範、django-rest-framework框架 問題:什麼是API? 答:API是介面,提供url. 介面有兩個用途: 為別人提供服務,前後端分離。 為什麼使用前後端分離? 答:主要為了資料的解耦,提高開發效率。 如果更新了資料,

node.js初使用使用express外掛快速搭建登入註冊

首先,介紹些express,express是基於node.js平臺快速,開放,極簡的web開發框架,express 便於我們快速的開發node api介面 得保證安裝了node.js 下載好以後,新建server.js檔案 //引入模組 const express = require('

Spring專案整合apidoc生成api介面文件

一、背景需求  JavaWeb/spring專案寫成的api介面,需要自動生成api文件,甚至需要線上測試介面。考慮實現的方案有swagger,apidoc,spring rest docs。在之後的專案都有一一嘗試,最終還是覺得apidoc的方式比較合適,雖然有一些問題(針對線上

springboot restful api 介面使用

springboot restful api 介面 package com.example.demo; import org.springframework.core.io.FileSystemResource; import org.springframework.htt

阿里雲ECS伺服器部署Node.js專案詳細教程及多網站部署

本文詳細介紹如何部署NodeJS專案到阿里雲ECS上,以及本人在部署過程中所遇到的問題、坑點和解決辦法,可以說是全網最全最詳細的教程了。同時講解了如何申請阿里雲免費SSL證書,以及一臺ECS伺服器配置多網站的Nginx配置方法等。 作者:Kovli 1. 雲伺

Node.js-檔案系統使用第三方模組操作目錄

7. 第三方模組操作目錄 例子: npm install 包名 安裝 // =======第三方建立目錄包make-dir======== const madkDir = require('mak

Node.js-檔案模組其他操作

9. 其他操作 (1)絕對路徑 Fs.realpath() Fs.realpathSync() 例子: // 匯入檔案系統 const fs = require('fs'); fs.realpa

swagger 生成 PHP restful API 介面文件

需求: 為客戶端同事寫介面文件的各位後端同學,已經在各種場合回憶了使用自動化文件工具前手寫文件的血淚史. 我的故事卻又不同,因為首先來說,我在公司是 Android 組負責人,屬於上述血淚史中催死人不償命的客戶端陣營. 但血淚史卻是相通的,沒有自動化文件的日子,對介面

中小型的 Node.js 專案目錄

build 構建指令碼 dist 編譯出來的釋出版 docs 文件 examples 示例檔案 src 原始碼 test 測試指令碼 .babelrc Babel 交叉編譯的配置 .eslintrc ESLint 測試配置&n

Openstack-Restful Api 介面測試

       目前 OpenStack中訊息傳遞有兩種機制,一種是訊息佇列,另一種就是Restful API。其中Openstack專案的介面遵循REST原則,即使用Restful Api實現OpenStack各Server與Client互動通訊。下面測試一下直接使用Open