Asp.net core Web Api 配置swagger中文

news2024/11/20 9:13:50

启动项目,如图:

原来是英文的,我们要中文的,WeatherForecastController.cs是一个示例,删除即可,WeatherForecast.cs同时删除,当然不删除也行,这里是删除,创建自己的控制器

1创建model实体

namespace HouseSysWebApplication.Model
{
    ///<summary>
    /// 图片实体类
    /// </summary>
    public class Book
    {
        /// <summary>
        /// 编号
        /// </summary>
        public int id { get; set; }
        /// <summary>
        /// 书名
        /// </summary>
        public string title { get; set; }
        /// <summary>
        /// 作者
        /// </summary>
        public string author { get; set; }
        /// <summary>
        /// 价格
        /// </summary>
        public float price { get; set; }
        /// <summary>
        /// 图片地址
        /// </summary>
        public string image { get; set; }
    }

}

2 添加控制器BookController

Controller文件夹上右键,选择“添加”,选择“控制器”,选择API,

using HouseSysWebApplication.Model;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace HouseSysWebApplication.Controllers
{

    /// <summary>
    /// 图书控制器
    /// </summary>

    [Route("api/[controller]")]
    [ApiController]
    public class BookController : ControllerBase
    {


        List<Book> bookList = InitBookStore();
        private static List<Book> InitBookStore()
        {
            List<Book> bookList = new List<Book>();
            Book b1 = new Book();
            b1.id = 101;
            b1.author = "杨康";
            b1.title = "Java从入门到精通";
            b1.price = 89.5f;
            b1.image = "img01.jpg";
            bookList.Add(b1);
            Book b2 = new Book();
            b2.id = 102;
            b2.author = "天涯";
            b2.title = "Java项目开发实战入门";
            b2.price = 49.5f;
            b2.image = "img02.jpg";
            bookList.Add(b2);
            Book b3 = new Book();
            b3.id = 103;
            b3.author = "标贵";
            b3.title = "Java编程思想";
            b3.price = 76f;
            b3.image = "img03.jpg";
            bookList.Add(b3);
            Book b4 = new Book();
            b4.id = 104;
            b4.author = "西法";
            b4.title = "web开发手册";
            b4.price = 78.3f;
            b4.image = "img04.jpg";
            bookList.Add(b4);
            Book b5 = new Book();
            b5.id = 105;
            b5.author = "海风";
            b5.title = "唐诗宋词";
            b5.price = 29.5f;
            b5.image = "img05.jpg";
            bookList.Add(b5);
            return bookList;
        }
        /// <summary>
        /// 获取所有图书
        /// </summary>
        /// <returns>图书列表</returns>
        [HttpGet("all")]
        public List<Book> BookStore()
        {
            return bookList;
        }


        /// <summary>
        /// 查询指定名称的图书
        /// </summary>
        /// <param name="bookName">图书标题</param>
        /// <returns>图书列表</returns>
        [HttpGet("search")]
        public IEnumerable<Book> BookStore(string bookName)
        {
            return bookList.FindAll(x => x.title.Contains(bookName)).AsEnumerable();
        }






    }
}

这里要注意的是代码的完整注释要写上,既然是写接口,生成的文档所以要详细,可读性强,启动后效果

3 生成xml文档

项目右键,选择属性,点击生成,勾选

将项目编译生成,就会自动创建xml文档

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>HouseSysWebApplication</name>
    </assembly>
    <members>
        <member name="T:HouseSysWebApplication.Controllers.BookController">
            <summary>
            图书控制器
            </summary>
        </member>
        <member name="M:HouseSysWebApplication.Controllers.BookController.BookStore">
            <summary>
            获取所有图书
            </summary>
            <returns>图书列表</returns>
        </member>
        <member name="M:HouseSysWebApplication.Controllers.BookController.BookStore(System.String)">
            <summary>
            查询指定名称的图书
            </summary>
            <param name="bookName">图书标题</param>
            <returns>图书列表</returns>
        </member>
        <member name="T:HouseSysWebApplication.Model.Book">
            <summary>
             图片实体类
             </summary>
        </member>
        <member name="P:HouseSysWebApplication.Model.Book.id">
            <summary>
            编号
            </summary>
        </member>
        <member name="P:HouseSysWebApplication.Model.Book.title">
            <summary>
            书名
            </summary>
        </member>
        <member name="P:HouseSysWebApplication.Model.Book.author">
            <summary>
            作者
            </summary>
        </member>
        <member name="P:HouseSysWebApplication.Model.Book.price">
            <summary>
            价格
            </summary>
        </member>
        <member name="P:HouseSysWebApplication.Model.Book.image">
            <summary>
            图片地址
            </summary>
        </member>
    </members>
</doc>

4修改Program.cs

只要改一个地方就行

builder.Services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "微信小程序后端api文档", Version = "v1" });
   // var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);//获取应用程序所在目录(绝对,不受工作目录影响,建议采用此方法获取路径)
   // var xmlPath = Path.Combine(basePath, "HouseSysWebApplication.xml");

    var xmlPath = Path.Combine(AppContext.BaseDirectory, "HouseSysWebApplication.xml");

    c.IncludeXmlComments(xmlPath, true);//true:显示控制器注释
    c.OrderActionsBy(o => o.RelativePath);//action名称排序
});

5编译生成,启动,看效果,立马中文

选择某个接口,比如第1个

,点击测试,没有问题,说明一切杠杠的

注释没有问题,相当的帅,单独访问也正常

 6、IIS操作

7、修改web.config文件

原来是这样的

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\HouseSysWebApplication.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: b0eb1c5f-e8f5-4e0e-9968-c58f6c4d78db-->

增加一个内容

完整的内容是这样的

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\HouseSysWebApplication.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" >
      <environmentVariables>
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
      </environmentVariables>
      </aspNetCore>




    </system.webServer>
  </location>
    <system.webServer>
        <defaultDocument>
            <files>
                <clear />
                <add value="index.htm" />
                <add value="Default.htm" />
                <add value="Default.asp" />
                <add value="index.html" />
                <add value="iisstart.htm" />
            </files>
        </defaultDocument>
    </system.webServer>
</configuration>
<!--ProjectGuid: b0eb1c5f-e8f5-4e0e-9968-c58f6c4d78db-->

8、修改网站默认首页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CORE: Cooperative Reconstruction for Multi-Agent Perception 论文阅读

论文连接 CORE: Cooperative Reconstruction for Multi-Agent Perception 0. 摘要 本文提出了 CORE&#xff0c;一种概念简单、有效且通信高效的多智能体协作感知模型。 从合作重建的新颖角度解决了该任务&#xff1a; 合作主体共同提供对环境的更全面的观察整体观察可以作为…

Redis为什么这么快?高频面试题详解

Redis为什么这么快&#xff1f; Redis利用epoll来实现IO多路复用&#xff0c;将连接信息和事件放到队列中&#xff0c;一次放到文件事件分派器&#xff0c;事件分派器将事件分发给事件处理器。 Redis 是跑在单线程中的&#xff0c;所有的操作都是按照顺序线性执行的&#xf…

C进阶-动态内存管理

本章重点&#xff1a; 为什么存在动态内存分配&#xff1f; 动态内存函数的介绍 malloc free calloc realloc 常见的动态内存错误 经典的笔试题 柔性数组 1.为什么存在动态内存分配 开辟空间的方式有两个特点&#xff1a; 1. 空间开辟大小是固定的。 2. 数组在申明的…

Codeforces Round 846 (Div. 2) E. Josuke and Complete Graph 详解 数论分块

题目大意 题意来源 解题思路 首先我们假设存在 x x x满足 a , b ∈ [ l , r ] , g c d ( a , b ) x a,b\in[l,r],gcd(a,b)x a,b∈[l,r],gcd(a,b)x那么肯定 g c d ( ⌊ a / x ⌋ , ⌊ b / x ⌋ ) 1 就是互质 gcd(\lfloor a/x \rfloor, \lfloor b/x \rfloor)1就是互质 gcd(⌊a…

Js高级技巧—拖放

拖放基本功能实现 拖放是一种非常流行的用户界面模式。它的概念很简单&#xff1a;点击某个对象&#xff0c;并按住鼠标按钮不放&#xff0c;将 鼠标移动到另一个区域&#xff0c;然后释放鼠标按钮将对象“放”在这里。拖放功能也流行到了 Web 上&#xff0c;成为 了一些更传统…

如何制作电子画册更吸引读者?

电子画册是我们生活中最常见的书刊&#xff0c;无论是小公司还是大企业&#xff0c;都会制作一本属于自己的电子画册&#xff0c;可如何制作更加吸引读者的电子画册&#xff1f;这可难倒了好多人。 其实&#xff0c;制作一份好的电子画册需要一定的技巧和经验&#xff0c;比如…

【爬虫实战】python微博热搜榜Top50

一.最终效果 二.项目代码 2.1 新建项目 本文使用scrapy分布式、多线程爬虫框架编写的高性能爬虫&#xff0c;因此新建、运行scrapy项目3步骤&#xff1a; 1.新建项目: scrapy startproject weibo_hot 2.新建 spider: scrapy genspider hot_search "weibo.com" 3…

AI低代码维格云日历视图怎么用?

日历视图,是一个以天为单位,清晰展示当月所有日程的视图。在团队协作的过程中,我们常常会碰到以下场景: 制作项目日历,让团队成员知道每天需要完成什么任务; 制作排课表,给老师和教室安排课程; 制作会议日历,提醒团队成员进行每周计划与回顾; 制作营销日历,把握全年…

23面向对象案例1

目录 1、计算连续表达式的一个过程 2、优化后的代码 为什么不能return resultn&#xff1f; 3、用面向对象的方法可以解决冗余的问题&#xff0c;但是还是不能解决result的值可以被随意修改的问题 4、解决不能被随意修改的问题&#xff0c;可以将类属性改成私有变量吗&…

Marvin攻击25 年之久的RSA解密漏洞重现

1998 年发现的与 SSL 服务器中的 PKCS #1 v1.5 填充相关的缺陷&#xff08;据信已得到解决&#xff09;至今仍然影响着多个广泛使用的项目。 经过衡量端到端操作的广泛测试后&#xff0c;红帽研究人员发现了原始定时攻击的几种变体&#xff0c;统称为“马文攻击”&#xff0c;…

343. 整数拆分 96.不同的二叉搜索树

343. 整数拆分 设dp[i]表示拆分 数字i 出来的正整数相乘值最大的值 (i - j) * j,和dp[i - j] * j是获得dp[i]的两种乘法&#xff0c;在里面求最大值可以得到当前dp[i]的最大值&#xff0c;但是这一次的得出的最大值如果赋值给dp[i]&#xff0c;可能没有没赋值的dp[i]大&#…

springboot aop详解

springboot aop的实现方式有哪些 在 Spring Boot 中&#xff0c;AOP&#xff08;面向切面编程&#xff09;是通过 Spring Framework 提供的 AOP 模块来实现的。Spring AOP 提供了几种实现方式来应用切面编程&#xff0c;包括以下几种&#xff1a; 基于代理的 AOP&#xff1a; …

CSS变量 var()的用法

写在前面 这里介绍一下开发中常用的css变量var()&#xff0c;它可以实现样式的动态设置&#xff0c;使用方法主要分为全局使用和局部使用两种。 如何定义CSS变量var() 在CSS文件中&#xff0c;变量需要使用 – 作为前缀来定义&#xff0c;后面跟上变量名和值&#xff0c;如&a…

基于人工电场优化的BP神经网络(分类应用) - 附代码

基于人工电场优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于人工电场优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.人工电场优化BP神经网络3.1 BP神经网络参数设置3.2 人工电场算法应用 4.测试结果…

ARM +FPGA GPIB IP核实现

目前在数据发生其技术上居领先的是美国的 Tektronix 公司和 Agilent 公司。 Agilent 公司的台式脉冲 / 数据发生器家族的最高时钟频率达 3GHz &#xff08;定 时发生器&#xff09;&#xff0c;数据发生器 E81200 在通道数为 8CH 时数据速率为 660Mb/s, 即可以产…

22python生命周期的一种案例

第一个问题&#xff0c;什么叫生命周期&#xff1f; 生命周期就是一个对象从产生到消亡的一个周期过程&#xff0c;总体来说是一个这样的 展示一下生命周期的一点点的小案例吧~ 1、利用全局变量 #以下是一个python展示生命周期的方法过程 personCount 0 class Person:def _…

月薪过二万的Java面试

文章目录 &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。&#x1f30e;跑过十五…

创新YOLOv5改进:结合全新可变形大核注意力(D-LKA Attention)实现多尺度目标涨点

🔥🔥🔥 提升多尺度目标检测,创新提升 🔥🔥🔥 🔥🔥🔥 捕捉图像特征和处理复杂图像特征 🔥🔥🔥 👉👉👉: 本专栏包含大量的新设计的创新想法,包含详细的代码和说明,具备有效的创新组合,可以有效应用到改进创新当中 👉👉👉: 🐤🐤�…

Java并发面试题:(一)线程的5种状态及转换

线程的状态转换 1、新建状态&#xff08;New&#xff09;&#xff1a;新创建了一个线程对象。 2、就绪状态&#xff08;Runnable&#xff09;&#xff1a;线程对象创建后&#xff0c;其他线程调用了该对象的start()方法。该状态的线程位 于可运行线程池中&#xff0c;变得可运…

设计模式(1)-设计模式前置基础知识

1&#xff0c;设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中&#xff0c;而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫亚历山大&#xff08;Christopher Alexand…