node代码如下(exptest.js):

var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var patientinfo=require('./node_entity/patientinfo');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded app.get('/api/patientinfo',patientinfo.get);
app.post('/api/patientinfo',patientinfo.update);
app.put('/api/patientinfo',patientinfo.put);
app.delete('/api/patientinfo',patientinfo.delete); app.listen(3000);

patientinfo.js(位于node_entity目录下,可自定义)代码如下:

exports.get = function(req, res){  

  res.setHeader('Content-Type', 'application/json;charset=utf-8');
res.send('get patientinfo info ok');
console.log('遍历参数:');
for(var key in req.query)
console.log('%s = %s',key,req.query[key]);
console.log('patientinfo get ok!');
}; exports.delete = function(req, res){
res.setHeader('Content-Type', 'application/json;charset=utf-8'); res.send({status:"success", message:"delete patientinfo success"});
console.log('遍历参数:');
for(var key in req.body)
console.log('%s = %s',key,req.body[key]);
console.log('patientinfo delete ok!');
}; exports.update = function(req, res){
res.setHeader('Content-Type', 'application/json;charset=utf-8'); res.send({status:"success", message:"update patientinfo success"});
console.log('遍历参数:');
for(var key in req.body)
console.log('%s = %s',key,req.body[key]);
console.log('patientinfo update ok!');
}; exports.put = function(req, res){
res.setHeader('Content-Type', 'application/json;charset=utf-8');
console.log(req.body); res.send({status:"success", message:"add patientinfo success"});
console.log('遍历参数:');
for(var key in req.body)
console.log('%s = %s',key,req.body[key]);
console.log('patientinfo put OK!');
};

通过C#编写一个winform程序,代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} enum Method
{
POST,
GET,
PUT,
DELETE
}
private string MyWebRequest(string webUrl,Method method, IDictionary<string, string> parameters, Encoding dataEncode)
{
string ret = string.Empty;
try
{
string paramData = "";
if (!(parameters == null || parameters.Count == ))
{
StringBuilder buffer = new StringBuilder();
int i = ;
foreach (string key in parameters.Keys)
{
if (i > )
{
buffer.AppendFormat("&{0}={1}", key, parameters[key]);
}
else
{
buffer.AppendFormat("{0}={1}", key, parameters[key]);
}
i++;
} paramData = buffer.ToString();
}
if (method == Method.GET)
{
webUrl += "?" + paramData;
} HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(webUrl));
webReq.Method = method.ToString();
webReq.ContentType = "application/x-www-form-urlencoded";
//webReq.ContentType = "text/html";
if (method != Method.GET)
{
byte[] byteArray = dataEncode.GetBytes(paramData); //转化
webReq.ContentLength = byteArray.Length;
Stream newStream = webReq.GetRequestStream();
newStream.Write(byteArray, , byteArray.Length);//写入参数
newStream.Close();
}
HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
ret = sr.ReadToEnd();
// ret = HttpUtility.UrlDecode(ret);
sr.Close();
response.Close(); }
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return ret;
}
private void button2_Click(object sender, EventArgs e)
{
Dictionary<string, string> param = new Dictionary<string, string>();
param["Function"] = "StudioList";
param["UserJID"] = "windows01@win-nq66026cp12";
string ret = MyWebRequest("http://127.0.0.1:3000/api/patientinfo", Method.POST, param, Encoding.UTF8); MessageBox.Show(ret);
}
private void button3_Click(object sender, EventArgs e)
{
Dictionary<string, string> param = new Dictionary<string, string>();
param["Function"] = "StudioList";
param["UserJID"] = "windows01@win-nq66026cp12";
string ret = MyWebRequest("http://127.0.0.1:3000/api/patientinfo",Method.DELETE, param, Encoding.UTF8); MessageBox.Show(ret);
} private void button4_Click(object sender, EventArgs e)
{
Dictionary<string, string> param = new Dictionary<string, string>();
param["Function"] = "StudioList";
param["UserJID"] = "windows01@win-nq66026cp12";
string ret = MyWebRequest("http://127.0.0.1:3000/api/patientinfo",Method.PUT, param, Encoding.UTF8); MessageBox.Show(ret);
} private void button5_Click(object sender, EventArgs e)
{
Dictionary<string, string> param = new Dictionary<string, string>();
param["Function"] = "StudioList";
param["UserJID"] = "windows01@win-nq66026cp12";
string ret = MyWebRequest("http://127.0.0.1:3000/api/patientinfo",Method.GET, param, Encoding.UTF8); MessageBox.Show(ret);
}
}
}

WinForm程序运行界面如下:

在Windows命令窗口运行node exptest.js,然后依次点击WinForm程序上的按钮,结果如下:

node.js+express,实现RESTful API的更多相关文章

  1. Node.js + Express + Knex 开发 API 接口

    安装依赖包 npm i express knex mysql2 这是 Knex 官方文档地址:Knex.js - SQL query builder. 搭建接口 config.js 新建一个 conf ...

  2. 【重学Node.js 第1&2篇】本地搭建Node环境并起RESTful Api服务

    本地搭建Node环境并起RESTful Api服务 课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https: ...

  3. 使用Express构建RESTful API

    RESTful服务 REST(Representational State Transfer)的意思是表征状态转移,它是一种基于HTTP协议的网络应用接口风格,充分利用HTTP的方法实现统一风格接口的 ...

  4. Node.js Express 框架学习

    转载:http://JavaScript.ruanyifeng.com/nodejs/express.html#toc0 感觉很牛的样子,不过觉得对初学者没太大用,里面很多例子用的api都没有详细的说 ...

  5. Windows下Node.js+Express+WebSocket 安装配置

    Linux参考: Linux安装Node.js 使用Express搭建Web服务器 Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V ...

  6. Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

    目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...

  7. body-parser Node.js(Express) HTTP请求体解析中间件

    body-parser Node.js(Express) HTTP请求体解析中间件 2016年06月08日     781     声明 在HTTP请求中,POST.PUT和PATCH三种请求方法中包 ...

  8. Nodejs学习笔记(六)—Node.js + Express 构建网站预备知识

    前言 前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识! 主要是些基础的东西... 如何去创建路由规则.如何去提交表单并接收表单项的值.如何去给密 ...

  9. modeJS 深了解(1): Node.js + Express 构建网站预备知识

    转载:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp1.html 目录 前言 新建express项目并自定义路由规则 如何提取页面中的 ...

  10. Node.js Express 框架

    Node.js Express 框架 Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP ...

随机推荐

  1. 新的旅程:NodeJS - 环境篇

    用ASP.NET MVC好多年了,还记得当初为MVC所倡导的"DRY"理念所感染,为Razor的简单而震撼.随着MVC的成熟反而让我觉得似乎渐渐地走入了微软营造的一种高技术的牢笼. ...

  2. Error:Could not find common.jar (android.arch.core:common:1.0.0)

    Error:Could not find common.jar (android.arch.core:common:1.0.0). Searched in the following location ...

  3. C#图片处理(转zhjzwl/archive)

    基本原理: 获取每一个像素值,然后处理这些每一个像素值.   原始图片: ISINBAEVA ~~~~~~~~ 一. 底片效果 原理: GetPixel方法获得每一点像素的值, 然后再使用SetPix ...

  4. 使用node-webkit(v0.35.5)和innosetup(3.6.1)打包将web程序打包为桌面客户端(安装包)

    这边主要是有一个客户,需要在电视机上安装一个客户端,含有视频直播功能:刚开始我们采用的webapp打包成apk安装在电视机上,发现摄像头监控画面根本无法播放(apk在手机上可以正常播放视频):排除一些 ...

  5. 理解以太坊的Layer 2扩容解决方案:状态通道(State Channels)、Plasma 和 Truebit

    -宾夕法尼亚州的尼科尔森大桥建设照片(图源).罗马人的工程原理扩展至新的应用 对于以太坊来说,2018年是专注底层架构之年.今年很多早期参与者会测试网络极限,并且重新关注以太坊的扩容技术. 以太坊仍然 ...

  6. 主流蓝牙芯片盘点,Nordic/TI/博通哪家强?

    无线通信技术自19世纪中期诞生以来,从使用狼烟.火炬.闪光镜.信号弹等在视距内传输信息,到1838年塞缪尔・莫尔斯发明电报网,再到电报网被电话取代,再到几十年后的1895年马可尼首次从英国怀特岛到30 ...

  7. 《Linux内核分析》--扒开系统调用的三层皮 20135311傅冬菁

    扒开系统调用的三层皮           20135311傅冬菁 一.内容分析 寄存器上下文(从用户态切换到内核态) 中断/int指令会在堆栈上保存一些寄存器的值(用户态栈顶地址..当时的状态字.当下 ...

  8. 作业五:分析system_call中断处理过程

    分析system_call中断处理过程 一.MesuSO增加getpid和getpid-asm 二.使用GDB跟踪系统调用内核函数sys_getpid 分析system_call中断处理过程 使用gd ...

  9. 网络助手的NABCD分析

    我们小组这次做的软件名字叫为校园网络助手.本校校园网分为内网与外网认证两种,并且有着流量限制,所以我们设计出来了这项软件,它主要有着两项功能:一键WIFI与校内网盘. N--need.在学校里每当流量 ...

  10. jvm垃圾回收机制和常见算法

    这是朋友给的面试题里边的,具体地址已经找不到,只能对原作者说声抱歉了: 理论上来讲sun公司只定义了垃圾回收机制规则,而步局限于其实现算法,因此不同厂商生产的虚拟机采用的算法也不尽相同. GC(Gar ...