对于轻松搭建基于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电商)
- 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电商)
背景介绍
首先介绍下在本文出现的几个比较重要的概念:
函数计算(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 ,可以打开轻商城:
可以在轻商城中浏览商品,并将喜欢的商品添加到购物车中(暂不支持支付):
架构图
项目部署
准备工作
- 从 aliyun 获取基础信息: accountId 可以从安全设置页面获取、ak 信息可以从安全信息管理页面获取。
- 下载 Fun 工具: 我们会使用 Fun 工具完成项目的部署工作。这里建议直接下载二进制可执行程序。
- 配置 Fun 工具: 下载完成后,执行 fun config 配置 aliyun accountId、ak 以及 region 等信息。如果域名没有备案,这里 region 只能选择海外集群。如果域名已经备案,则没有限制。
- 域名: 比如本文使用的 litemall.mofangdegisn.cn 域名。在域名所在的控制台添加一个 CNAME 域名解析,将记录值填写为 1911504709953557.cn-hangzhou.fc.aliyuncs.com,然后将这里的 1911504709953557 替换成自己的 accountid,cn-hangzhou 替换为自己在上一步配置的 region。
- 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
我已经用Web API创建了一个新的MVC 4应用程序。基于一些示例和教程,我开始配置我的路由:
routes.MapHttpRoute( name: "Controller only",routeTemplate: "api/{controller}" );
但是,这会导致RouteCollection不包含MapHttpRoute的定义的错误。我是否安装了一些DLL?
据我看到,我已经安装了所有正确的DLL和版本。
解决方法
asp.net-web-api – Windows.Web.Http.HttpClient WEB API Windows身份验证
使用(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)))
我没有看到发送默认凭据的方法.
解决方法
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
我正在使用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查找引用和查看调用层次不会提供洞察力(实现该接口?).
我需要做什么/有更好的方法吗?
谢谢.
解决方法
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 项目:
-
一。安装 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 中运行)的相关知识,请在本站进行查询。
本文标签: