GVKun编程网logo

轻松搭建基于 SpringBoot + Vue 的 Web 商城应用(vue+springboot电商)

2

对于轻松搭建基于SpringBoot+Vue的Web商城应用感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍vue+springboot电商,并为您提供关于asp.net-web-api–Sys

对于轻松搭建基于 SpringBoot + Vue 的 Web 商城应用感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍vue+springboot电商,并为您提供关于asp.net-web-api – System.Web.Routing.RouteCollection不包含“MapHttpRoute”的定义 – VS 2012,Web API、asp.net-web-api – Windows.Web.Http.HttpClient WEB API Windows身份验证、asp.net-web-api – 在ASP.NET Web API控制器的nunit测试中实例化新的System.Web.Http.OData.Query.ODataQueryOptions、docker 运行 jenkins 及 vue 项目与 springboot 项目 (五.jenkins 打包 springboot 服务且在 docker 中运行)的有用信息。

本文目录一览:

轻松搭建基于 SpringBoot + Vue 的 Web 商城应用(vue+springboot电商)

轻松搭建基于 SpringBoot + Vue 的 Web 商城应用(vue+springboot电商)

背景介绍


首先介绍下在本文出现的几个比较重要的概念:

函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考。
Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考。
litemall 是一个基于 Spring Boot、Vue、微信小程序等技术开发的商场系统。它包括 Spring Boot 后端 + Vue 管理员前端 + 微信小程序用户前端 + Vue 商城移动端。 更多参考。

本文演示如何将该商城应用的 Spring Boot 后端、Vue 管理员前端、Vue 商城移动端三个组件迁移到函数计算。

下面是一个已经将到函数计算应用示例效果演示。

效果演示

管理后台效果演示

打开 http://litemall.mofangdegisn.cn 显示登陆页面:

使用默认的账户即可登陆。完成后,会进入到后台管理页面:

可以在后台管理页面添加商品类目、上架商品、用户管理、系统管理等等。

移动端轻商城效果演示

使用手机打开网址 http://litemall.mofangdegisn.cn/vue/index.html ,可以打开轻商城:

可以在轻商城中浏览商品,并将喜欢的商品添加到购物车中(暂不支持支付):

架构图

项目部署

准备工作

  1. 从 aliyun 获取基础信息: accountId 可以从安全设置页面获取、ak 信息可以从安全信息管理页面获取。
  2. 下载 Fun 工具: 我们会使用 Fun 工具完成项目的部署工作。这里建议直接下载二进制可执行程序。
  3. 配置 Fun 工具: 下载完成后,执行 fun config 配置 aliyun accountId、ak 以及 region 等信息。如果域名没有备案,这里 region 只能选择海外集群。如果域名已经备案,则没有限制。
  4. 域名: 比如本文使用的 litemall.mofangdegisn.cn 域名。在域名所在的控制台添加一个 CNAME 域名解析,将记录值填写为 1911504709953557.cn-hangzhou.fc.aliyuncs.com,然后将这里的 1911504709953557 替换成自己的 accountid,cn-hangzhou 替换为自己在上一步配置的 region。
  5. Mysql: 可以是自己搭建的 MYSQL 数据库,也可以使用 aliyun RDS 数据库,准备好 MYSQL 的用户名以及密码。如果仅仅是 demo 示例,可以将 rds 白名单设置为 0.0.0.0/0,并申请外网地址,如果是非示例场景,需要为函数计算配置 VPC 访问,可以参考这里的教程配置 VPC 访问 RDS。本文的示例为 demo 性质,因此使用的是 0.0.0.0/0 的方式。

克隆项目

执行下面的命令克隆项目:

git clone git@github.com:tanhe123/litemall.git

如果没有安装 Git,也可以直接在页面点击 Downlaoad Zip 直接下载代码并解压:

为域名创建 CNAME

为我们准备好的域名,添加 CNAME 记录

导入数据库

在 MYSQL 数据库上创建一个名为 litemall 的 database,然后将 litemall-db/sql 中的 litemall_table.sql 以及 litemall_data.sql 两个文件导入到该数据库中。

如果使用的是 aliyun RDS,可以直接通过下面的方法导入:

修改 template.yml 中的配置

修改 template.yml 中的 SPRING_DATASOURCE_DRUID_URL 为数据库地址,修改 SPRING_DATASOURCE_DRUID_USERNAME 为数据库用户名,修改 SPRING_DATASOURCE_DRUID_PASSWORD 为用户名密码。

最后将 template.yml 中的域名 litemall.mofangdegisn.cn 替换为自己域名。

安装商城 Vue 管理员后端 + Vue 商城移动端的 npm 依赖

对于 linux 或者 mac,可以直接执行项目内的 ./install.sh,该命令会分别进入到 litemall-admin 以及 litemall-vue 执行 cnpm install。

编译 Java 项目并部署

假如我们要使用的域名是 http://litemall.mofangdegisn.cn ,执行以下命令:

DOMAIN=http://litemall.mofangdegisn.cn ./deploy.sh

需要将上面的域名替换为用户自己的域名,执行完毕后,完成部署。

打开配置的域名即可看到效果。

 

 

原文链接

本文为阿里云内容,未经允许不得转载。

asp.net-web-api – System.Web.Routing.RouteCollection不包含“MapHttpRoute”的定义 – VS 2012,Web API

asp.net-web-api – System.Web.Routing.RouteCollection不包含“MapHttpRoute”的定义 – VS 2012,Web API

我刚刚安装了Visual Studio 2012,并开始检查MVC 4和Web Api。
我已经用Web API创建了一个新的MVC 4应用程序。基于一些示例和教程,我开始配置我的路由:
routes.MapHttpRoute(
                name: "Controller only",routeTemplate: "api/{controller}"
            );

但是,这会导致RouteCollection不包含MapHttpRoute的定义的错误。我是否安装了一些DLL?
据我看到,我已经安装了所有正确的DLL和版本。

解决方法

我已经通过在RouteConfig.cs中添加对System.Web.Http的引用来解决它

asp.net-web-api – Windows.Web.Http.HttpClient WEB API Windows身份验证

asp.net-web-api – Windows.Web.Http.HttpClient WEB API Windows身份验证

我使用 Windows.Web.Http.HttpClient连接到我的WEB API.应用程序没有提示用户名和密码,但最近我通过将AuthorizeAttribute过滤器从Action级别移动到类级别来更改WEB API.现在我的Windows应用商店8.1应用程序提示用户ID和密码.请让我知道如何设置HttpClient不提示登录和密码. any1可以建议我,我需要添加标头到我的httpcleint

使用(Windows.Web.Http.HttpClient httpClient = new Windows.Web.Http.HttpClient())
                {
                    //添加用户代理标头
                    var headers = httpClient.DefaultRequestHeaders;

//检查用户标头值的安全方法是TryParseAdd方法
 //因为我们知道这个标题是可以的,所以我们使用ParseAdd会抛出异常
  //值不好 – http://msdn.microsoft.com/en-us/library/windows/apps/dn440594.aspx

headers.UserAgent.ParseAdd("ie");
                headers.UserAgent.ParseAdd("Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");


                using (var response = await httpClient.GetAsync(new Uri(url)))

我没有看到发送默认凭据的方法.

解决方法

使用HttpBaseProtocolFilter.AllowUI禁用UI对话框.试试这个:

Windows.Web.Http.Filters.HttpBaseProtocolFilter filter =
    new Windows.Web.Http.Filters.HttpBaseProtocolFilter();
filter.AllowUI = false;
HttpClient client = new HttpClient(filter);

Uri uri = new Uri("http://localhost/?basic=1");
var response = await client.GetAsync(uri);
System.Diagnostics.Debug.WriteLine(response);

你需要凭证吗?使用HttpBaseProtocolFilter.ServerCredential.试试这个:

Uri uri = new Uri("http://localhost?ntlm=1");

Windows.Web.Http.Filters.HttpBaseProtocolFilter filter =
    new Windows.Web.Http.Filters.HttpBaseProtocolFilter();
filter.AllowUI = false;

// Set credentials that will be sent to the server.
filter.ServerCredential =
    new Windows.Security.Credentials.PasswordCredential(
        uri.ToString(),"userName","abracadabra");

HttpClient client = new HttpClient(filter);
var response = await client.GetAsync(uri);
System.Diagnostics.Debug.WriteLine(response);

您需要默认的Windows凭据(域凭据)吗?只需将Enterprise Authentication功能添加到Package.appxmanifest即可.

asp.net-web-api – 在ASP.NET Web API控制器的nunit测试中实例化新的System.Web.Http.OData.Query.ODataQueryOptions

asp.net-web-api – 在ASP.NET Web API控制器的nunit测试中实例化新的System.Web.Http.OData.Query.ODataQueryOptions

我有一个ASP.NET MVC4 Web API项目与ApiController继承的控制器接受一个ODataQueryOptions参数作为其输入之一.

我正在使用NUnit和Moq来测试该项目,这使我能够从ApiController使用的相关的存储库方法中设置canned响应.这样做,如:

[TestFixture]
public class ProjectControllerTests
{
    [Test]
    public async Task GetById()
    {
        var repo = new Mock<IManagementQuery>();

        repo.Setup(a => a.GetProjectById(2)).Returns(Task.Fromresult<Project>(new Project()
        { 
              ProjectID = 2,ProjectName = "Test project",ProjectClient = 3
        }));

        var controller = new ProjectController(repo.Object);
        var response = await controller.Get(2);

        Assert.AreEqual(response.id,2);
        Assert.AreEqual(response.name,"Test project");
        Assert.AreEqual(response.clientId,3);
    }
}

我所面临的挑战是,要使用这种模式,我需要将相关的querystring参数传递给控制器​​以及存储库(这实际上是我的意图).然而,在使用ODataQueryOptions接受ApiController方法的情况下,即使在我想仅使用ODataQueryOptions的默认参数的情况下,我需要知道如何实例化一个.这变得棘手:

> ODataQueryOptions不实现接口,所以我不能直接模拟它.
>构造函数需要实现System.Web.Http.OData.ODataQueryContext,它需要实现一些实现Microsoft.Data.Edm.IEdmModel的文件,文档很少,Visual Studio 2012查找引用和查看调用层次不会提供洞察力(实现该接口?).

我需要做什么/有更好的方法吗?

谢谢.

解决方法

看来,其他人在 here的评论中已经回答了这个问题,但这不是我的用例的完整解决方案(见下面的评论):
ODataModelBuilder modelBuilder = new ODataConventionModelBuilder(); 
modelBuilder.EntitySet<Customer>("Customers"); 
var opts = new ODataQueryOptions<Customer>(new ODataQueryContext(modelBuilder.GetEdmModel(),typeof(Customer)),request);

docker 运行 jenkins 及 vue 项目与 springboot 项目 (五.jenkins 打包 springboot 服务且在 docker 中运行)

docker 运行 jenkins 及 vue 项目与 springboot 项目 (五.jenkins 打包 springboot 服务且在 docker 中运行)

docker 运行 jenkins 及 vue 项目与 springboot 项目:
  • 一。安装 docker

  • 二.docker 运行 jenkins 为自动打包运行做准备

  • 三.jenkins 的使用及自动打包 vue 项目

  • 四.docker 运行 nginx

  • 五.jenkins 打包 springboot 服务且在 docker 中运行


#####1. 立即构建 输入任务名称:service_blog 选择 maven 项目 (先要在插件管理中安装 maven 插件) #####2. 配置 ###### 源码管理 选择 git (先要在插件管理中安装 git 插件) 输入 git 地址、秘钥及需要打包的分支 ######Pre Steps Build: pom.xml, 输入 maven 命令 clean package Post Steps:add post-build step-> 选择执行 shell 输入 shell 命令:

				#!/bin/bash
				
				#下面的路径都是指jenkins容器中的路径,非宿主机服务器的路径(通过该命令进入容器查看:docker exec -it {jenkins容器id} /bin/bash)
				#操作/项目路径(Dockerfile[下附配置]存放的路径)
				BASE_PATH=/var/jenkins_home/service
				# 源jar路径(jenkins利用maven打包项目的jar包的路径,其service_blog则为构建时输入的任务名称)
				SOURCE_PATH=/var/jenkins_home/workspace/service_blog/target
				#docker 镜像/容器名字 这里都命名为这个(自定义)
				SERVER_NAME=service-blog
				#jar名字(jenkins利用maven打包项目的jar包名称)
				JAR_NAME=personal_blog-0.0.1-SNAPSHOT
				#容器id
				CID=$(docker ps -a | grep "$SERVER_NAME" | awk ''{print $1}'')
				#镜像id
				IID=$(docker images -a | grep "$SERVER_NAME" | awk ''{print $3}'')
				 
				DATE=`date +%Y%m%d%H%M`
				 
				# 最新构建代码 移动到项目环境
				function transfer(){
					echo "最新构建代码 $SOURCE_PATH/$SERVER_NAME/target/$JAR_NAME.jar 迁移至 $BASE_PATH ...."
						cp $SOURCE_PATH/$JAR_NAME.jar $BASE_PATH/
					echo "迁移完成"
				}
				 
				# 备份
				function backup(){
					if [ -f "$BASE_PATH/$JAR_NAME.jar" ]; then
						echo "$JAR_NAME.jar 备份..."
							cp $BASE_PATH/$JAR_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar
						echo "备份 $JAR_NAME.jar 完成"
					else
						echo "$BASE_PATH/$SERVER_NAME.jar不存在,跳过备份"
					fi
				}
				 
				# 构建docker镜像
				function build(){
					if [ -n "$IID" ]; then
						echo "存在$SERVER_NAME镜像,IID=$IID,删除后重新构建"
						docker rmi $IID
						echo "删除完毕,开始构建镜像"
						cd $BASE_PATH
						docker build -t $SERVER_NAME .
					else
						echo "不存在$SERVER_NAME镜像,开始构建镜像"
							cd $BASE_PATH
						docker build -t $SERVER_NAME .
					fi
				}
				 
				# 运行docker容器
				function run(){
					echo "执行backup ..."
					backup
					echo "执行transfer ..."
					transfer
					echo "执行build ..."
					build
					echo "docker run ..."
					if [ -n "$CID" ]; then
						echo "存在$SERVER_NAME容器,CID=$CID,停止后 删除,重新创建启动"
							docker stop $CID
							docker rm  $CID
							docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 8089:8089 $SERVER_NAME
						echo "$SERVER_NAME容器重启完成"
					else
						echo "不存在$SERVER_NAME容器,docker run创建容器..."
							docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 8089:8089 $SERVER_NAME
						echo "$SERVER_NAME容器创建完成"
					fi
				}
				 
				#入口
				run   

springboot 项目的 Dockerfile 配置:

			#基于openjdk:8
			FROM openjdk:8

			ADD  personal_blog-0.0.1-SNAPSHOT.jar personal_blog.jar
			 
			# 指定当前操作目录
			WORKDIR /var/jenkins_home/service
			 
			ADD  personal_blog-0.0.1-SNAPSHOT.jar personal_blog.jar
			RUN bash -c ''touch /personal_blog.jar''
			ENTRYPOINT ["java","-Djava.security.egd-file:/dev/./urandom","-jar","-Xmx1024m","-Xms1024m","/personal_blog.jar"]

保存配置 #####3. 立即构建 查看控制台,看看是否有错误,最后是否 success 查看 springboot 应用的日志,看看是否启动成功,是否有错误:docker logs -f --tail=100 {容器 id}

今天的关于轻松搭建基于 SpringBoot + Vue 的 Web 商城应用vue+springboot电商的分享已经结束,谢谢您的关注,如果想了解更多关于asp.net-web-api – System.Web.Routing.RouteCollection不包含“MapHttpRoute”的定义 – VS 2012,Web API、asp.net-web-api – Windows.Web.Http.HttpClient WEB API Windows身份验证、asp.net-web-api – 在ASP.NET Web API控制器的nunit测试中实例化新的System.Web.Http.OData.Query.ODataQueryOptions、docker 运行 jenkins 及 vue 项目与 springboot 项目 (五.jenkins 打包 springboot 服务且在 docker 中运行)的相关知识,请在本站进行查询。

本文标签: