Asp.Net Core WebApi 從開發(fā)到部署

WebApi效果圖
響應(yīng)

一、開發(fā)Asp.Net Core WebApi

說明:
1、關(guān)于如何使用.net core,本文不做介紹,由于這方面的文章現(xiàn)在很多。大家可以去博客園或者微軟官方網(wǎng)站根據(jù)文檔教程一步一步學(xué)習(xí)。
2、本項(xiàng)目屬于個(gè)人微信小程序項(xiàng)目。由于后期需要布到小程序平臺進(jìn)行公測使用,所以源代碼不公開請各位看官見諒。
3、本項(xiàng)目開發(fā)環(huán)境及工具:vs2017、MySql5.7、centos7.3

1、項(xiàng)目搭建

解決方案
架構(gòu)圖.jpg

2、開發(fā)中使用到的第三方插件

2-1、AutoMapper

關(guān)于AutoMapper是什么?請自行百度。這里要說的是AutoMapper已經(jīng)支持了 .net core 開發(fā)啦。使用方法請參考官方文檔。
AutoMapper官方網(wǎng)站
AutoMapper源碼

本項(xiàng)目中使用到的AutoMapper版本

本項(xiàng)目中示例(定義):

//=============================================================
//  Copyright (C) 2017-2100
//  CLR版本:                    4.0.30319.42000
//  機(jī)器名稱:                   YPF-PC
//  命名空間名稱/文件名:        XiaoDouZi.Invoicing.Utils.AutoMapper/ProdcutCreateMapper 
//  創(chuàng)建人:                     楊朋飛     
//  創(chuàng)建時(shí)間:                   2017/7/4 9:55:20
//  我的簡書:                  http://www.lxweimin.com/u/40fb2e2a8047
//==============================================================

using AutoMapper;
using System;
using System.Collections.Generic;
using System.Text;
using XiaoDouZi.Invoicing.Dto;
using XiaoDouZi.Invoicing.Model;

namespace XiaoDouZi.Invoicing.Utils.AutoMapper
{
    public class CategoryCreateMapper
    {
        public static IMapper CreateMapper()
        {
            var mapperConfig = new MapperConfiguration(
                c =>
                {
                    c.CreateMap<CategoryCreateDto, Category>().ForMember(s => s.Gid, t => t.Ignore());
                });

            return mapperConfig.CreateMapper();
        }
    }
}

本項(xiàng)目中示例(使用):

/// <summary>
        /// 添加商品分類
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        [HttpPost]
        public async Task<IActionResult> Post(CategoryCreateDto dto)
        {
            var s = CategoryCreateMapper.CreateMapper().Map<CategoryCreateDto, Category>(dto);
            return await this._categoryService.AddAsync(s) ?
                Json(new { code = 200, message = Resource.ResponseMessage.AddCategory }) :
                Json(new { code = 200, message = Resource.ResponseMessage.Fail });
        }

2-2、Autofac

關(guān)于Autofac是什么?請自行百度。這里要說的是Autofac已經(jīng)支持了 .net core 開發(fā)啦。使用方法請參考官方文檔。
Autofac官方網(wǎng)站
官方示例文檔

Autofac

本項(xiàng)目中示例(Program.cs):


本項(xiàng)目中示例(Startup.cs):


image.png

3、開發(fā)中遇到的各種坑

3-1、Swagger

關(guān)于Swagger是什么?請自行百度。這里要說的是Swagger已經(jīng)支持了 .net core 開發(fā)啦。使用方法請參考官方文檔。

swagger tools
  • 注冊Swagger中間件

注冊Swagger中間件
注釋文檔生成路徑配置

注意生成的注釋文檔路徑和這里填寫的要一致。

  • 配置Swagger中間件

配置Swagger

這里需要注意的是啟用swagger中間件及配置一定要放在UserMvc之前。
這里需要注意的是啟用swagger中間件及配置一定要放在UserMvc之前。
這里需要注意的是啟用swagger中間件及配置一定要放在UserMvc之前。
重要的事情說三遍

  • Controller中的各個(gè)Action必須要有注釋信息、請求的特性

Action的注釋及請求特性

注意:是每個(gè)Action都必須要有注釋信息和請求特性。如果不添加這些,就會導(dǎo)致swagger報(bào)錯(cuò)。

二、發(fā)布Asp.Net Core WebApi

1、發(fā)布項(xiàng)目

  • 命令方式

  • 打開項(xiàng)目的根目錄
  • 按住Shift+右鍵
  • 在此打開命令行
  • 在命令行中執(zhí)行下面這句話
dotnet publish
  • vs2017工具

右鍵點(diǎn)擊WebApi站點(diǎn)→發(fā)布

vs2017工具發(fā)布

2、配置運(yùn)行環(huán)境

  • 安裝.net core sdk

參考官方文檔教程

  • 安裝MySql

安裝參考博文
注意問題:
1、博文中第四部中的命令存在問題,我已經(jīng)正確的命令貼在下面。

rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-compat-5.7.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rpm 
rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm 
rpm -ivh mysql-community-devel-5.7.18-1.el7.x87_64.rpm

2、關(guān)于執(zhí)行這些命令時(shí)候報(bào)錯(cuò)問題,請看下面的解答。

執(zhí)行上面命令時(shí)報(bào)錯(cuò)信息

這是由于安裝過程中有如上報(bào)錯(cuò)。說明缺少依賴包。
解決方法

yum install numactl -y

yum install libaio -y

yum install perl -y
  • 安裝Nginx

參考博文

下載獨(dú)立版

jexus和Nginx可以二選一,他們都是通過反向代理的方式來是Asp.Net Core WebApi來運(yùn)行。

2-1、騰訊云服務(wù)器申請

騰訊云、阿里云、xxx云都可以。我這里申請的是騰訊云,操作系統(tǒng)選擇centos7.3 x64。由于我沒有申請?jiān)茢?shù)據(jù)庫mysql,所以自己安裝了mysql數(shù)據(jù)庫。具體步驟上面已經(jīng)介紹了。

騰訊云

2-2、測試運(yùn)行

  • 進(jìn)入到網(wǎng)站部署目錄
cd /var/www/default/publish_XiaoDouZi
  • 執(zhí)行命令
dotnet XiaoDouZi.Invoicing.WebApi.dll
  • 設(shè)置該進(jìn)程為后臺進(jìn)程(由于我們關(guān)閉了shell后,網(wǎng)站服務(wù)也會跟著關(guān)閉,所以需要將其設(shè)置為后臺進(jìn)程)
nohup dotnet XiaoDouZi.Invoicing.WebApi.dll &
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容