node.js+express,实现RESTful API
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的更多相关文章
- Node.js + Express + Knex 开发 API 接口
安装依赖包 npm i express knex mysql2 这是 Knex 官方文档地址:Knex.js - SQL query builder. 搭建接口 config.js 新建一个 conf ...
- 【重学Node.js 第1&2篇】本地搭建Node环境并起RESTful Api服务
本地搭建Node环境并起RESTful Api服务 课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https: ...
- 使用Express构建RESTful API
RESTful服务 REST(Representational State Transfer)的意思是表征状态转移,它是一种基于HTTP协议的网络应用接口风格,充分利用HTTP的方法实现统一风格接口的 ...
- Node.js Express 框架学习
转载:http://JavaScript.ruanyifeng.com/nodejs/express.html#toc0 感觉很牛的样子,不过觉得对初学者没太大用,里面很多例子用的api都没有详细的说 ...
- Windows下Node.js+Express+WebSocket 安装配置
Linux参考: Linux安装Node.js 使用Express搭建Web服务器 Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V ...
- Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识
目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...
- body-parser Node.js(Express) HTTP请求体解析中间件
body-parser Node.js(Express) HTTP请求体解析中间件 2016年06月08日 781 声明 在HTTP请求中,POST.PUT和PATCH三种请求方法中包 ...
- Nodejs学习笔记(六)—Node.js + Express 构建网站预备知识
前言 前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识! 主要是些基础的东西... 如何去创建路由规则.如何去提交表单并接收表单项的值.如何去给密 ...
- modeJS 深了解(1): Node.js + Express 构建网站预备知识
转载:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp1.html 目录 前言 新建express项目并自定义路由规则 如何提取页面中的 ...
- Node.js Express 框架
Node.js Express 框架 Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP ...
随机推荐
- C语言与数据库操作入门(Win版)
C语言与数据库操作入门(Win版) 2017年12月10日 17:30:17 阅读数:1387 数据库,DataBase,学C语言的是不是想说,很想爱她却并不容易呢?不用着急,C语言也可以操作数据库的 ...
- Docker GitHub 网站中 Readme.md 以技术者的角度翻译
Docker 是一个开源的轻量级容器项目,用于让你的应用在它上面打包.集装和运行.Docker 运行的环境既包含未知硬件也包含未知操作系统.这句话的意思是它可以运行在任何地方,小到你的笔记本大到一个大 ...
- 如何在unity中使用龙骨动画
龙骨 龙骨是Egret公司的一个用来做动画的软件,本文分享一下如何在Unity2D中使用龙骨导出的2D动画 导出动画 在龙骨中文件->导出,导出动画数据和纹理到Unity的项目中,如果打包了的话 ...
- 再探Redux Middleware
前言 在初步了解Redux中间件演变过程之后,继续研究Redux如何将中间件结合.上次将中间件与redux硬结合在一起确实有些难看,现在就一起看看Redux如何加持中间件. 中间件执行过程 希望借助图 ...
- EOS 权限管理之-权限的使用
首先,跟大家说声抱歉,由于之前一直在准备EOS上线的一些工作,所以,很长时间没有更新内容.今天正好有时间,也想到了一些题材,就来说一下这个话题.本文完全是个人见解,如有不当之处,欢迎指出. 前提回顾: ...
- JWT总结
Json web token (JWT) 什么是JWT? Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该toke ...
- PAT甲题题解-1022. Digital Library (30)-map映射+vector
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789235.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- M1阶段事后分析
M1阶段的开发结束了,在周四的课上我们组也进行了alpha阶段的汇报.我们的努力得到了应有的回报,下面我们将针对M1阶段产生的一些问题进行分析和反思. 一.设想和目标 1.我们的app更像是一款针对北 ...
- Redis学习笔记之入门基础知识——五种数据类型
1) 字符串 SET设置值,GET获取值,DEL删除值 INCR key-name将键存储的值加上1 DECR key-name将键存储的值减去1 INCRBY key-name amou ...
- 第二阶段冲刺——seven
个人任务: 马佳慧:设计界面背景,统一风格. 王金萱:整体运行测试上传到公网上的程序. 季方:修改优化已上传的代码. 司宇航:整体调试程序继续优化. 站立会议: 任务看板和燃尽图: