C# webAPI 精解

news2024/11/25 22:48:02

入门 创建一个web项目

先创建一个web项目 基本可以运行的程度 用postman进行接口测试
.NET Framework 和 .NET Core 都可以创建 webAPI 这里用 .NET Framework 比较简单 。
启动 Visual Studio,并从“开始”页中选择“新建项目”。 或者,在 “文件” 菜单中,选择“ 新建 ”,然后选择“ 项目”。

在 “模板 ”窗格中,选择 “已安装的模板 ”并展开 “Visual C# ”节点。 在 Visual C# 下,选择 “Web”。 在项目模板列表中,选择 ASP.NET Web 应用程序 或者直接在创建页面搜索 “ASP.NET Web 应用程序”

选择 webAPI
在这里插入图片描述

创建好先关了 概述页面
接下来要关注的文件夹只有 models 和 Controllers
在models 里添加Product 类

namespace ProductsApp.Models
{
    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Category { get; set; }
        public decimal Price { get; set; }
    }
}

在controllers 里添加控制器 webapi 2 空 的
在这里插入图片描述
填写名称有一定要在controller 前加上对应数据类的名称 --ProductsController

入门 定义方法

定义GetAllProducts () 和 GetProduct()方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

using WebApplication1.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Http;

namespace WebApplication1.Controllers
{
    public class ProductsController : ApiController
    {
        Product[] products = new Product[]
        {
            new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 },
            new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M },
            new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
        };

        public IEnumerable<Product> GetAllProducts()
        {
            return products;
        }

        public IHttpActionResult GetProduct(int id)
        {
            var product = products.FirstOrDefault((p) => p.Id == id);
            if (product == null)
            {
                return NotFound();
            }
            return Ok(product);
        }
    }
}

接下来直接运行就能看到我们的api了

在这里插入图片描述

如果报错 localhost 拒绝了我们的连接请求 极有可能是端口繁忙,稍等一下就正常了

输入 https://localhost:44378/api/Products 就可查看返结果
到此 web api 简单完成了

入门 操作返回结果

ASP.NET Web API如何将返回值从控制器操作转换为 HTTP 响应消息

在这里插入图片描述
如果操作返回 HttpResponseMessage,Web API 使用 HttpResponseMessage 对象的属性来填充响应,将返回值直接转换为 HTTP 响应消息。

public class ValuesController : ApiController
{
    public HttpResponseMessage Get()
    {
        HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, "value");
        response.Content = new StringContent("hello", Encoding.Unicode);
        response.Headers.CacheControl = new CacheControlHeaderValue()
        {
            MaxAge = TimeSpan.FromMinutes(20)
        };
        return response;
    } 
}

IHttpActionResult在实际使用时可以用 System.Web.Http.Results 命名空间中定义的 IHttpActionResult 实现。 ApiController 类定义返回这些内置操作结果的帮助程序方法。

其中定义了很多返回的类型可以直接调用

public IHttpActionResult Get (int id)
{
    Product product = _repository.Get (id);
    if (product == null)
    {
        return NotFound(); // Returns a NotFoundResult
    }
    return Ok(product);  // Returns an OkNegotiatedContentResult
}

入门 帮助页 和说明文档

添加 API 文档

默认情况下,帮助页包含文档的占位符字符串。 可以使用 XML 文档注释 创建文档。 若要启用此功能,请打开文件 Areas/HelpPage/App_Start/HelpPageConfig.cs 并取消注释以下行

config.SetDocumentationProvider(new XmlDocumentationProvider(
    HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")));

下一步 勾选 , 输入生成路径
在这里插入图片描述
完成 这时给 controller上的方法写/// ///注释 会显示在帮助文档上


        /// <summary>
        /// 方法名和请求方式是一一对应的
        /// </summary>
      public IHttpActionResult GetEmployee(int id)

在这里插入图片描述

路由

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

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

相关文章

简单介绍Roop(类似SimSwap)单张图视频换脸的项目

文章目录 &#xff08;一&#xff09;关于Roop&#xff08;二&#xff09;安装Roop&#xff08;CPU&#xff09;&#xff08;2.1&#xff09;克隆仓库&#xff08;2.2&#xff09;设置python国内源&#xff08;2.2&#xff09;检查安装virtualenv&#xff08;2.3&#xff09;创…

chatgpt赋能python:Python文本处理——从文本中提取数据

Python文本处理——从文本中提取数据 在数据分析和机器学习中&#xff0c;从文本中提取数据是一个十分重要的步骤。在Python中&#xff0c;我们可以使用各种工具和库来实现这一目标。这篇文章将介绍一些Python中用于从文本中提取数据的常用技术。 正则表达式 正则表达式是一…

大数据管理平台DataSophon-1.1.1安装部署详细流程

1 DataSophon介绍 1.1 DataSophon愿景 DataSophon致力于快速实现部署、管理、监控以及自动化运维大数据云原生平台&#xff0c;帮助您快速构建起稳定、高效、可弹性伸缩的大数据云原生平台。 1.2 DataSophon是什么 《三体》&#xff0c;这部获世界科幻文学最高奖项雨果奖的…

聚观早报 | 英伟达市值破万亿美元;微信问一问搜索功能开始内测

今日要闻&#xff1a;英伟达市值破万亿美元&#xff1b;微信「问一问」搜索功能开始内测&#xff1b;快播宣告破产公司已注销&#xff1b;贤合庄北京门店全部关闭&#xff1b;华为AIGC或在7月发布 英伟达市值破万亿美元 5 月 30 日消息&#xff0c;上周三&#xff0c;英伟达发…

阿里云服务器选购指南(图文教程详解)

目录 一、前言 二、基本概念 1.定义 2.部署形式 3.用处 三、主流平台 1.Google 2.AWS 3.华为云 4.腾讯云 5.阿里云 四、云服务器分类 1.云服务器ECS 2.轻量应用服务器 3.GPU云服务器 4.FPGA云服务器 5.无影云桌面 五、选购指南 1.明确需求 2.明确身份 3.明确时间 4.明确教程 一…

浅谈数字电视大楼电力保护监控系统的设计与应用

摘要&#xff1a;介绍天津电视台数字电视大厦电力监控系统的选择与建立&#xff0c;组网方式&#xff0c;系统的使用与报文的显示等&#xff0c;通过该系统对大厦所有变配电回路、UPS 线路等关键部位进行监控和管理。 关键词&#xff1a;电力监控;数字电视;变配电; 1.总述 天津…

一个通用的自适应prompt方法,突破了零样本学习的瓶颈

深度学习自然语言处理 原创作者&#xff1a;Winni 今天要给大家介绍一篇Google的研究&#xff0c;解决了大语言模型&#xff08;LLMs&#xff09;在零样本学习方面的困境。相比于少样本学习&#xff0c;LLMs在零样本学习上常常表现得比较弱&#xff0c;这主要是因为缺乏指导。而…

MySQL数据库 5.DDl操作数据库

目录 &#x1f914;DDL介绍&#xff1a; &#x1f914;语法详解&#xff1a; 1.查询&#xff1a; 1.查询所有数据库&#xff1a; 示例&#xff1a;查询自带数据库 2.查询当前数据库&#xff1a; 2.创建&#xff1a; 示例&#xff1a;创建一个名字叫做itcast的数据库&…

chatgpt赋能python:Python的交运算:了解、应用和优化

Python的交运算&#xff1a;了解、应用和优化 Python是一种流行的编程语言&#xff0c;它拥有丰富的数据结构和算法库。其中&#xff0c;交运算是一种常用的操作&#xff0c;它能够方便地比较两个集合的相同元素。在这篇SEO文章中&#xff0c;我们将介绍Python中的交运算&…

(原创)Android apk应用加固、字节对齐、二次签名全流程

这篇博客主要是讲如何对apk应用进行加固、对齐和签名的&#xff0c;会有详细的步骤逐一介绍 前言 随着各大加固工具都开始逐一收费后&#xff0c;个人开发中或者中小型企业如何对应用进行加固就成了一个问题。以前我常用的是360加固助手&#xff0c;虽然每天限制一定的免费次数…

玖章算术荣获信通院“生成式人工智能技术和应用优秀案例”奖

5月31日&#xff0c;“杭州通用人工智能论坛”在杭州梦想小镇互联网村成功举办。本次会议由中国信息通信究院&#xff08;以下简称中国信通院&#xff09;、浙江省经济和信息化厅、杭州市人民政府、中国人工智能产业发展联盟等共同主办。 玖章算术获奖 玖章算术的 NineData 智…

git 使用ssh连接Github:017

1. 首先打开Git Bash终端&#xff0c;生成私钥和公钥&#xff1a;ssh-keygen 输入&#xff1a;ssh-keygen 之后&#xff0c; 会有三步提示&#xff0c;全部按回车建。 2. 进入主路径&#xff1a;cd ~/.ssh/ 进入这个路径之后&#xff0c;使用命令&#xff1a;ls 会看到两个文…

基于VMD-SSA-LSTM的多维时序光伏功率预测

目录 1 主要内容 变分模态分解(VMD) 麻雀搜索算法SSA 长短期记忆网络LSTM 2 部分代码 3 程序结果 4 下载链接 1 主要内容 之前分享了预测的程序基于LSTM的负荷和可再生能源出力预测【核心部分复现】&#xff0c;该程序预测效果比较好&#xff0c;并且结构比较清晰&#x…

.net 6.0图片转Base64部署到Linux系统上报The type initializer for ‘Gdip‘ threw an exception

在业务当中需要将图片文件转为Base64&#xff1a;windows上可以运行正常执行&#xff0c;部署到Linux系统上报The type initializer for ‘Gdip‘ threw an exception 图片转Base64代码如下 /// <summary> /// 图片转为base64编码的文本 /// </summary> /// <…

CMake深度解析:掌握add_custom_command,精通Makefile生成规则

CMake深度解析&#xff1a;掌握add_custom_command&#xff0c;精通Makefile生成规则 1. CMake简介与基础知识1.1 CMake的基本概念&#xff08;CMake Basic Concepts&#xff09;1.1.1 项目&#xff08;Project&#xff09;1.1.2 目标&#xff08;Target&#xff09;1.1.3 命令…

terminalworks ASP.NET Core PDF 浏览器-Crack

ASP.NET Core 的 PDF 查看器 terminalworks在 ASP.NET Core 网页或应用程序中添加可靠的 PDF 查看器的简单方法。 我们的 Web PDF 查看器基于经过验证和测试的 Mozilla PdfJS 解决方案&#xff0c;该解决方案在 Firefox 中用作默认 PDF 查看器。我们专门设计了我们的查看器&…

窄带高清技术之百万级并发下的演唱会直播细节修复

史无前例&#xff0c;高清又不卡。 5月&#xff0c;百视TV联合上海人民广播电台、时代峰峻共同出品的《东方风云榜》&#xff0c;绚烂呈现一场三十周年音乐分享会时代少年团《理想之途》。有人说&#xff0c;这是一场似梦非梦的记忆。 演唱会由“乐园”、“少年”、“乌托邦”三…

Pyside6-第四篇-QCheckBox复选框

今天是Pyside6的第四篇内容。一起来看复选框。 QCheckBox。 class QCheckBox(QAbstractButton):"""QCheckBox(self, parent: Optional[PySide6.QtWidgets.QWidget] None) -> NoneQCheckBox(self, text: str, parent: Optional[PySide6.QtWidgets.QWidget] …

爱尔眼科四川省区2023“集善扶困(贫)健康行”公益行动圆满收官

红原县地处青藏高原东部&#xff0c;位于四川省西北部、阿坝藏族羌族自治州中部&#xff0c;这里山原向丘状高原过渡&#xff0c;空气稀薄、气候偏冷、紫外线强&#xff0c;这里生活着大量藏族同胞。 这里地势出行不便医疗资源有限&#xff0c;青少年近视防控问题、中老年人的白…

CentOS的安装

Centos的安装 1.创建新的虚拟机2. 自定义3.下一步4.创建虚拟空白光盘5.安装Linux系统和Centos 7 发行版6.命名虚拟机名称和选择磁盘位置7.处理器配置 主要看自己的电脑的情况8.设置虚拟机内存9.网络设置 nat10.选择IO控制器类型11.选择磁盘类型12.创建新虚拟磁盘13.设置磁盘容量…