node接口编写,vue-cli代理接口方法 

  通常前端使用的MocK 数据的方法,去模拟假的数据,但是如果有node Mongodb 去写数据的话就不需要在去mock 数据了,具体的方法如下。

首先启动 mongodb、node、以及前端 项目。这里用加载商品列表做一个举例

1、在node项目创建

在node的项目中,创建文件夹: model。在model中创建 goods.js。在router 文件夹下创建 goods 的路由 goods.js。

2、模板goods.js编写(model下边的goods.js)

var mongoose = require('mongoose');
// 引入商品模型
var Schema = mongoose.Schema; // 定义商品模型
var productSchema = new Schema({
"productId": String,
"productName": String,
"salePrice": Number,
"productPic": String,
"checked": String
}); /**
* 输出 good 模型
* 有一个问题:在这里输出的是 good 但是数据库建立的一定要加s,代码会默认取数据库找 s 的那张表
*/
module.exports = mongoose.model('Good', productSchema);

3、在项目的app.js中配置 路由。

// 首先导入 goods 的路由文件
var goods = require('./routes/goods'); // 然后使用路由 // 新增路由商品,这个文件中的都是一级路由,这个路由到router下边的good,然后router那个good二级路由到 model 下边的goods
app.use('/goods', goods);

4、路由goods的编写。首先我们先确定连接数据库成功,然后再去数据库里面查找数据写接口

var express = require('express');
var router = express.Router(); var mongoose = require('mongoose');
var Goods = require('../model/goods'); /* 连接数目库. */
mongoose.connect('mongodb://127.0.0.1:27017/mall', {
useMongoClient: true
}); // 连接成功回调监听
mongoose.connection.on("connected", function(){
console.log("mongodb connected success");
}); // 连接失败回调监听
mongoose.connection.on("error", function(){
console.log("mongodb connected faile");
}); // 连接断开回调监听
mongoose.connection.on("disconnected", function(){
console.log("mongodb connected disconnected");
}); /**
* app.js 下边写的路由是一极路由,在这里写的路由是二级路由
* 例如:app.js 里面写的 /goods 这是一个路由地址了,下边写的 / 就是 /goods/ 默认加载的
* 这段代码的意思是:访问 http://1·27.0.0.1:3000/goods/ 其实就相当于是 Node 在这个地址里面 把前端想要的数据返回出来,这样前端调用这个地址就相当于是接口了
* 这块的路由就是 直接地址到/goods 然后再到 /
*/
router.get("/", function(req, res, next){
res.send("数据库连接成功");
}); module.exports = router;

这个时候重启一下 node 的服务,可以先关掉前便开启的服务,然后重启。

打开应该是

http://localhost:3000/

然后输入

http://localhost:3000/goods/

如果页面输出:数据库连接成功。则代表数据库连接成功了。这个时候便可以写我们的业务逻辑了,还是在router 下边的 goods.js中,整体代码应该是

/**
* app.js 下边写的路由是一极路由,在这里写的路由是二级路由
* 例如:app.js 里面写的 /goods 这是一个路由地址了,下边写的 / 就是 /goods/ 默认加载的
*/
router.get("/", function(req, res, next){ /**
* 连接请求处理数据 0 代表成功,1代表失败
* doc 就是返回的数据
*/ Goods.find({}, function(err, doc){
if(err){
res.json({
status: '',
msg: err.message
});
}else{
res.json({
status: '',
msg: '',
result: {
count: doc.length,
list: doc
}
});
}
});
});

这样重新启动node 然后输入地址变会出现,从数据库查找的 商品的 数据。

vue-cli代理接口方法 

  这个时候我们的商品数据的后端代码就差不多写完了;接下来就是把 接口放到前端去。因为我们的访问的还是 本地的接口,前后端项目又分离,这样前端访问这个接口其实还是牵扯到跨域的问题的,这样就需要在前端的项目中设置代理,来访问到接口了。

具体方法为:

用vue的项目做例子,把以前的mock数据的代码都去掉,在新的vue常见的项目中的config 下边的 index.js中 找到 dev,添加

// 设置代理
proxyTable: {
   '/goods':{
     target:"http://localhost:3000",//设置你调用的接口域名和端口号 别忘了加http 相当于是 访问/goods的时候,默认前边的端口就是 target 里面写的
   }
}

意思就是当我们在项目中访问 goods这个接口的时候,自动代理到

http://localhost:3000/goods/

重新启动项目

npm run dev

看是否看到新的数据,整体就完了。

node、Mongo项目如何前后端分离提供接口给前端的更多相关文章

  1. 前后端分离,如何在前端项目中动态插入后端API基地址?(in docker)

    开门见山,本文分享前后端分离,容器化前端项目时动态插入后端API基地址,这是一个很赞的实践,解决了前端项目容器化过程中受制后端调用的尴尬. 尴尬从何而来 常见的web前后端分离:前后端分开部署,前端项 ...

  2. springBoot 搭建web项目(前后端分离,附项目源代码地址)

    springBoot 搭建web项目(前后端分离,附项目源代码地址)   概述 该项目包含springBoot-example-ui 和 springBoot-example,分别为前端与后端,前后端 ...

  3. RESTful、共用接口、前后端分离、接口约定的实践 (转)

    出处:  某小公司RESTful.共用接口.前后端分离.接口约定的实践 前言 随着互联网高速发展,公司对项目开发周期不断缩短,我们面对各种需求,使用原有对接方式,各端已经很难快速应对各种需求,更难以提 ...

  4. vue项目实践-前后端分离关于权限的思路

    前后端分离后权限的思路 最近看到许多关于权限的思路,但好像都是使用动态加载路由的方式,现在也分享下我在项目中使用的解决方案. 前后端分离关于权限的处理每个人都不一样,根据项目选择制定合适的方案就好 我 ...

  5. SpringBoot电商项目实战 — 前后端分离后的优雅部署及Nginx部署实现

    在如今的SpringBoot微服务项目中,前后端分离已成为业界标准使用方式,通过使用nginx等代理方式有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多端化服务(多 ...

  6. 某神秘公司 RESTful、共用接口、前后端分离、接口约定的实践

    阅读本文大概需要 4.6 分钟. 本文来自 https://juejin.im/post/59eafab36fb9a045076eccc3 前言 随着互联网高速发展,公司对项目开发周期不断缩短,我们面 ...

  7. Django:前后端分离后联调给前端传数据

    实现前后端分离后,有了下面几点改变: 1.服务器一分为二,前后端分别部署,静态资源放在前端服务器,业务代码放在后的服务器 2.前端服务器需要接收Http请求(一般使用node.js) 3.前端服务器需 ...

  8. 某小公司RESTful、共用接口、前后端分离、接口约定的实践

    作者:邵磊 juejin.im/post/59eafab36fb9a045076eccc3 前言 随着互联网高速发展,公司对项目开发周期不断缩短,我们面对各种需求,使用原有对接方式,各端已经很难快速应 ...

  9. 前后端分离,接口API,契约

    前后端分离了,然后呢? http://icodeit.org/2015/06/whats-next-after-separate-frontend-and-backend/ Swagger - 前后端 ...

随机推荐

  1. iOS学习笔记18-CoreData你懂的

    一.CoreData介绍 CoreData是iOS5之后新出来的的一个框架, 是对SQLite进行一层封装升级后的一种数据持久化方式. 它提供了对象<-->关系映射的功能,即能够将OC对象 ...

  2. noip模拟赛 三部曲

    分析:子树上操作,要用到线段树+dfs序,关键就是子树内k还要增加,这个就不是很好办.可以求出在根节点+0后每个点会加多少,记为d[i],如果要对点x进行A操作,实际上只需要对子树加k - d[i]再 ...

  3. 树 (p155, 从中序和后续回复二叉树)

    递归求解, You are to determine the value of the leaf node in a given binary tree that is the terminal no ...

  4. 【SSH之旅】一步步学习Hibernate框架(一):关于持久化

    在不引用不论什么框架下,我们会通过平庸的代码不停的对数据库进行操作,产生了非常多冗余的可是又有规律的底层代码,这样频繁的操作数据库和大量的底层代码的反复书写极大的浪费了程序人员的书写.就在这样一种情况 ...

  5. Android自己定义Toast

    一.引言 在开发的过程中你会发现Android自身的Toast提示有很多限制,比方我想自己定义Toast的动画.自己定义一个美观的View显示在Toast中.很多其它的是让Toast显示指定的时长等等 ...

  6. php生成随机password的几种方法

    文章来源:PHP开发学习门户 地址:http://www.phpthinking.com/archives/523 使用PHP开发应用程序,尤其是站点程序.经常须要生成随机password,如用户注冊 ...

  7. iOS UITableView 去除多余切割线

    在UITableView初始化时加上下面代码就可以: self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero ...

  8. activeMQ公布订阅模式中中经常使用工具类

    package com.jms; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.j ...

  9. VC问题 IntelliSense:“没有可用的附加信息”,[请參见“C++项目 IntelliSense 疑难解答”,获得进一步的帮助]

    在XP上安装VS2010 后发现 IntelliSense不能使用,但在Windows7上是能够正常使用这功能的.关于IntelliSense不能使用的问题已有网友提出了是由于KB2876217这个补 ...

  10. It&#39;s not a Bug, It&#39;s a Feature! (poj 1482 最短路SPFA+隐式图+位运算)

    Language: Default It's not a Bug, It's a Feature! Time Limit: 5000MS   Memory Limit: 30000K Total Su ...