日期: 2022-09-20 15:57:50 浏览数:4

上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
资阳企业微信公众号小程序开发公司、资阳企业网页设计方案、资阳做网站开发价格、资阳微信公众号制作运营报价明细表、资阳网站设计公司费用、资阳网站推广大概需要多少钱

资阳,四川省地级市,古代资州 [1] 下辖的资阳郡,古代文豪苌弘、 董钧 、王褒并称“资阳三贤”,乐至是开国元勋陈毅元帅的家乡。地处四川盆地中部,南与内江相邻,北与成都、德阳接壤,东与重庆、遂宁毗邻,西与眉山相连,是四川省唯一一座同时连接成渝“双核”的区域性中心城市。资阳公元前135年西汉时期置县,后设州、郡, 已有2100多年的建制史。35000年前,古老的“资阳人”开启了四川人类文明史。
1998年2月26日,经国务院批准设立资阳地区,2000年6月14日,经国务院批准撤销资阳地区设立地级资阳市。2016年5月3日,国务院同意将资阳市代管的县级简阳市改由成都市代管。现辖雁江区、安岳县、乐至县,总面积约5757平方公里。
资阳的城市名片是:“中国西部车城” [2] 、“四川省环境优美示范城市”、“中国节能之都” [3] 、“绿色资阳” [4] 、“三贤故里”、“中国长寿之乡“ [5] 。
2020年实现地区生产总值(GDP)807.5亿元,同比增长4.0%,高于全省(3.8%)0.2个百分点,居全省第10位。其中,第一产业增加值168.5亿元,增长5.4%;第二产业增加值228.6亿元,增长3.8%;第三产业增加值410.4亿元,增长3.5%。 [6]
REST是英文Representational State Transfer的缩写,中文称之为“表述性状态转移”,基于HTTP协议是另一种服务架构,传递是JSON、POX(Plain Old XML)而不是SOAP格式的数据充分利用HTTP谓词(Verb)侧重数据的传输,业务逻辑交给客户端自行处理.REST是一种分布式服务架构的风格约束,像Java、.Net(WCF、WebAPI)都有对该约束的实现,使URL变得更加有意义,更加简洁明了,如:
http://www.zhangguo.com/products/1 get请求 表示获得所有产品的第1个
http://www.zhangguo.com/products/product post请求 表示添加一个产品
http://www.zhangguo.com/products/1/price get请求 表示获得第1个产品的价格
http://www.zhangguo.com/products/1 delete请求 删除编号为1的产品
网络上的所有事物都被抽象为资源(resource);
每个资源对应一个唯一的资源标识符(resource identifier);
通过通用的连接器接口(generic connector interface)对资源进行操作;
对资源的各种操作不会改变资源标识符;
所有的操作都是无状态的(stateless)
GET
表示查询操作,相当于Retrieve、Select操作POST
表示插入操作,相当于Create,Insert操作PUT
表示修改操作,相当于Update操作DELETE
表示删除操作,相当于Delete操作
其它还有:

NodeJS+Express可以很容易的实现REST
application/x-www-form-urlencodedmultipart/form-dataapplication/jsonres.setHeader('Content-Type', 'application/json;charset=utf-8');示例代码cars.js:
var express = require('express');var router = express.Router();var = require('lodash');var cars=[];cars.push({id:201701,name:"BMW",price:190,speed:"210km/h",color:"白色"});cars.push({id:201702,name:"BYD",price:25,speed:"160km/h",color:"红色"});cars.push({id:201703,name:"Benz",price:300,speed:"215km/h",color:"蓝色"});cars.push({id:201704,name:"Honda",price:190,speed:"170km/h",color:"黑色"});cars.push({id:201705,name:"QQ",price:130,speed:"210km/h",color:"白色"});/ Get //获得所有汽车//url /cars//router.get('/', function(req, res, next) { res.json(cars);});/Get//获得汽车通过id//url:/cars/:id /router.get('/:id', function(req, res, next) {//从路径中映射参数,转换成数字 var id=parseInt(req.params.id); var car=.find(cars,{id:id}); res.json(car);});/Post//添加汽车//url:/cars/car /router.post('/car', function(req, res, next) { var car=req.body; //从请求正文中获得json对象 car.id=.last(cars).id+1; //将编号修改为最后一辆车的编号+1 cars.push(car); //将汽车对象添加到集合中 res.json(car); //将添加成功的车以json的形式返回});/Put//修改汽车//url:/cars/car /router.put('/car', function(req, res, next) { var car=req.body; //从请求正文中获得json对象 console.log(req.body); var index=.findIndex(cars,{id:parseInt(car.id)}); //根据id获得车在集合中的下标 cars[index]=car; //替换原对象 //res.json(car); //将修改后的车以json的形式返回 res.send({status:"success", message:"更新成功!"});});/Delete//删除汽车//url:/cars/:id /router.delete('/id/:id', function(req, res, next) {//获得url中的编号参数 var id=parseInt(req.params.id); var index=_.findIndex(cars,{id:id}); //根据id获得车在集合中的下标 cars.splice(index,1); //在cars数组中删除下标从index开始的1条数据 res.send({status:"success", message:"删除成功!"});});module.exports = router;示例代码app.js:
var express = require('express');var path = require('path');var favicon = require('serve-favicon');var logger = require('morgan');var cookieParser = require('cookie-parser');var bodyParser = require('body-parser');var index = require('./routes/index');var users = require('./routes/users');var pdts = require('./routes/product');var task = require('./routes/task');var cars = require('./routes/cars');var app = express();//指定视图引擎为ejsapp.set('views', path.join(dirname, 'views'));app.set('view engine', 'ejs');// uncomment after placing your favicon in /public//app.use(favicon(path.join(dirname, 'public', 'favicon.ico')));app.use(logger('dev'));app.use(bodyParser.json());app.use(bodyParser.urlencoded({ extended: false }));app.use(cookieParser());app.use(express.static(path.join(dirname, 'public')));app.use('/', index);app.use('/users', users);app.use('/pdt', pdts);app.use("/task",task);app.use("/cars",cars);// catch 404 and forward to error handlerapp.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err);});// error handlerapp.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error');});module.exports = app;/ Get /
/获得所有汽车/
/url /cars//

/Get/
/获得汽车通过id/
/url:/cars/:id /

/Post/
/添加汽车/
/url:/cars/car /


参数中的json格式一定要使用标准格式,注意引号,注意Content-Type,默认的Content-Type类型是:application/x-www-form-urlencoded
/Put/
/修改汽车/
/url:/cars/car /


/Delete/
/删除汽车/
/url:/cars/:id /


node.js跨域
修改app.js文件拦截所有的请求,修改头部
app.use(logger('dev'));app.use(bodyParser.json());app.use(bodyParser.urlencoded({ extended: false }));app.use(cookieParser());app.use(express.static(path.join(dirname, 'public')));app.all('', function(req, res, next) { res.header("Access-Control-Allow-Origin", ""); res.header("Access-Control-Allow-Headers", "content-type"); res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS"); res.header("X-Powered-By", ' 3.2.1'); res.header("Content-Type", "application/json;charset=utf-8"); if(req.method == "OPTIONS") { res.send("200"); } else { next(); }});结果:

追梦猪git地址:https://github.com/jiawenguang/NodeJsWebServer
本文章参考张果大大的教程实现
张果大大git地址:
https://coding.net/u/zhangguo5/p/NodeJSExpress/git
https://coding.net/u/zhangguo5/p/NodeJS001/git
特别鸣谢!
资阳企业微信公众号小程序开发公司、资阳企业网页设计方案、资阳做网站开发价格、资阳微信公众号制作运营报价明细表、资阳网站设计公司费用、资阳网站推广大概需要多少钱
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)