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. Python对Selenium调用浏览器进行封装包括启用无头浏览器,及对应的浏览器配置文件

    """ 获取浏览器 打开本地浏览器 打开远程浏览器 关闭浏览器 打开网址 最大化 最小化 标题 url 刷新 Python对Selenium封装浏览器调用 ------b ...

  2. GitHub 新手教程 六,Git GUI 新手教程(3),从GitHub远端同步代码库

    从GitHub把代码库下载到本地: 1,打开 GitGUI,单击我们之前克隆好的本地库: 2,按图片所示点击,同步远端代码: 3,出现如下提示后,点击“Close”: 4,上面只是把代码下载下来,还没 ...

  3. win10安装tensorflow-gpu

    1.安装anaconda (最好使用清华源下载) 2.打开cmd conda create -n tensorflow pip python=3.6 activate tensorflow pip i ...

  4. 《杜增强讲Unity之Tanks坦克大战》4-坦克的移动和旋转

    4 坦克移动和旋转 本节课的目标是实现同时wsad和上下左右控制两个坦克分别移动和旋转 4.1 本节代码预览   image 将上节课场景s2另存为s3. 4.2 添加车轮扬沙效果 从Prefabs里 ...

  5. win10引导错误的修复(内容系转载)

    #!尊重原作者,再此声明此内容属于网络转载,只是为了能保留下来方便日后查阅!!! win10误删引导文件,0xc0000098的解决方案,bcd引导文件受损情况分析 一.※相对简单的解决方法,对应的情 ...

  6. 吴恩达《AI For Everyone》_练习英语翻译_待更新

    AI For Everyone https://www.coursera.org/learn/ai-for-everyone 讲师: Andrew Ng (吴恩达) CEO/Founder Landi ...

  7. 机器学习英雄访谈录之 Kaggle Kernels 专家:Aakash Nain

    目录 机器学习英雄访谈录之 Kaggle Kernels 专家:Aakash Nain 正文 对我的启发 机器学习英雄访谈录之 Kaggle Kernels 专家:Aakash Nain Sanyam ...

  8. 《linux内核分析》第六周:分析fork函数对应的系统调用处理过程

    一. 阅读理解task_struct数据结构http://codelab.shiyanlou.com/xref/linux-3.18.6/include/linux/sched.h#1235: 进程是 ...

  9. 哥java学识有大进 干回之前的小学生系统像切菜一样简单 不说了 来代码

    package runok; import java.util.*; import java.awt.*; import java.awt.event.ActionEvent; import java ...

  10. 团队作业(五)-笔记app top5

    在互联网快速发展的情况下,各个行业的软件层出不穷,五花八门.各个行业都有相当多的软件介入其中,在如此多的软件之中,便有了相当激烈的竞争角逐.今天我们十五万的总冠军就着笔记APP行业中位列top 5的软 ...