C# WebAPi入门

  • 1.创建一个WebApi项目
  • 测试Demo
  • 序列Xml类
  • WebApi路由配置

1.创建一个WebApi项目

1️⃣VS2019 创建ASP.NET应用程序

2️⃣注意:框架要选择.NETF FrameWork 4.5及以上
文件目录如下

End创建结束

测试Demo

1.创建实体类

public partial class UserInfo{/// <summary>/// 用户ID/// </summary>public int ID { get; set; }/// <summary>/// 用户姓名/// </summary>public string UserName { get; set; }/// <summary>/// 用户密码/// </summary>public string UserPass { get; set; }/// <summary>/// 注册时间/// </summary>public System.DateTime RegTime { get; set; }/// <summary>/// 邮箱/// </summary>public string Email { get; set; }}

2.创建ApiController

     [HttpGet]public HttpResponseMessage GetUserInfoAll(){List<UserInfo> user = new List<UserInfo>(){new UserInfo (){ ID=1,UserName="znx",UserPass="test",Email="123123@163.com",RegTime=DateTime.Now},new UserInfo (){ ID = 2, UserName = "xmh", UserPass = "test", Email = "123123@163.com", RegTime = DateTime.Now } };return new HttpResponseMessage(){RequestMessage = Request,Content = new StringContent(SimpleXmlConvert.XmlSerialize<List<UserInfo>>(user))};}

返回结果如下

SimpleXmlConvert类见下

序列Xml类

1.第一种序列化SimpleXmlConvert

public class SimpleXmlConvert{/// <summary>/// 将实体类型转换为XML/// </summary>/// <typeparam name="T"></typeparam>/// <param name="obj"></param>/// <returns></returns>public static string XmlSerialize<T>(T obj){try{using (StringWriter sw = new StringWriter()){Type t = obj.GetType();XmlSerializer serializer = new XmlSerializer(obj.GetType());serializer.Serialize(sw, obj);sw.Close();return sw.ToString();}}catch (Exception e){throw new Exception("将实体类型对象转换成XML异常",e) ;}}public static T DESerializer<T>(string strXML) where T : class{try{using (StringReader rd=new StringReader(strXML)){XmlSerializer serializer = new XmlSerializer(typeof(T));return serializer.Deserialize(rd) as T;}}catch (Exception e){throw new Exception("将XML字符串转换成实体对象异常", e);}}}

2.第二种序列化方法

public class SimpleXmlConverter2{public static string ToXml<T>(IList<T> entities, string rootName = "") where T : new(){if (entities == null || entities.Count == 0){return string.Empty;}StringBuilder builder = new StringBuilder();builder.AppendLine(XmlResource.XmlHeader);XElement element = ToXElement<T>(entities, rootName);builder.Append(element.ToString());return builder.ToString();}public static XmlDocument ToXmlDocument<T>(IList<T> entities, string rootName = "") where T : new(){if (entities == null || entities.Count == 0){return null;}XmlDocument xmlDocument = new XmlDocument();xmlDocument.LoadXml(ToXml<T>(entities, rootName));return xmlDocument;}public static XDocument ToXDocument<T>(IList<T> entities, string rootName = "") where T : new(){if (entities == null || entities.Count == 0){return null;}return  XDocument.Parse(ToXml<T>(entities, rootName));}public static XElement ToXElement<T>(IList<T> entities, string rootName = "") where T : new(){if (entities == null || entities.Count == 0){return null;}if (string.IsNullOrWhiteSpace(rootName)){rootName = typeof(T).Name + XmlResource.XmlRootNameSuffix;}XElement element = new XElement(rootName);foreach (T entity in entities){element.Add(ToXElement<T>(entity));}return element;}public static string ToXml<T>(T entity) where T : new(){if (entity == null){return string.Empty;}XElement element = ToXElement<T>(entity);return element.ToString();}public static XElement ToXElement<T>(T entity) where T : new(){if (entity == null){return null;}XElement element = new XElement(typeof(T).Name);PropertyInfo[] properties = typeof(T).GetProperties();XElement innerElement = null;object propertyValue = null;foreach (PropertyInfo property in properties){propertyValue = property.GetValue(entity, null);innerElement = new XElement(property.Name, propertyValue);element.Add(innerElement);}return element;}public static XElement ToXElement(Type type) {if (type == null){return null;}XElement element = new XElement(type.Name);PropertyInfo[] properties = type.GetProperties();XElement innerElement = null;foreach (PropertyInfo property in properties){innerElement = new XElement(property.Name, null);element.Add(innerElement);}return element;}}

WebApi路由配置

1.webapi路由在App_Start文件夹下WebApiConfig.cs
2.路由默认不更改情况下 自带的Get、Post,Put,Delete方法只可使用一次 可以在方法前添加标签[HttpGet]、[HttpPost]可使用多次
路由请求地址
https://localhost:44310/api/test/GetUserInfoAll

C# ASP.NET WebApi入门相关推荐

  1. ASP.NET WebApi技术从入门到实战演练

    一.课程介绍 曾经有一位不知名的讲师说过这么一句名言: 一门RPC技术不会,那么千万万门RPC技术将都不会!在今天移动互联网的时代,作为攻城师的我们,谁不想着只写一套API就可以让我们的Web, An ...

  2. 【翻译转载】【官方教程】Asp.Net MVC4入门指南(2):添加一个控制器

    2. 添加一个控制器 · 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-c ...

  3. Asp.Net MVC4入门指南(3):添加一个视图

    在本节中,您需要修改HelloWorldController类,从而使用视图模板文件,干净优雅的封装生成返回到客户端浏览器HTML的过程. 您将创建一个视图模板文件,其中使用了ASP.NET MVC ...

  4. ASP.NET MVC入门到精通——Spring.net-业务层仓储

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 上一节,我们已经把项目框架的雏形搭建好了,那么现在我来开始业务实现,在业务实现的过程当中,不断的来完善我们现有的框架. 1.假设我们来做一个 ...

  5. ASP.NET AJAX入门系列(1):概述

    经常关注我的Blog的朋友可能注意到了,在我Blog的左边系列文章中,已经移除了对Atlas学习手记系列文章的推荐,因为随着ASP.NET AJAX 1.0 Beta版的发布,它们已经不再适用,为了不 ...

  6. 【开源】分享一个前后端分离方案-前端angularjs+requirejs+dhtmlx 后端asp.net webapi

    一.前言 半年前左右折腾了一个前后端分离的架子,这几天才想起来翻出来分享给大家.关于前后端分离这个话题大家也谈了很久了,希望我这个实践能对大家有点点帮助,演示和源码都贴在后面. 二.技术架构 这两年a ...

  7. ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用

    原文:ASP.NET Core 入门教程 2.使用ASP.NET Core MVC框架构建Web应用 一.前言 1.本文主要内容 使用dotnet cli创建基于解决方案(sln+csproj)的项目 ...

  8. 【转】ASP.NET AJAX入门系列

    ASP.NET AJAX入门系列将会写关于ASP.NET AJAX一些控件的使用方法以及基础知识,其中部分文章为原创,也有一些文章是直接翻译自官方文档,本部分内容会不断更新. 目录 ASP.NET A ...

  9. ASP.NET WebApi OWIN 实现 OAuth 2.0

    OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌, ...

  10. ASP.NET CORE 入门教程(附源码)

    ASP.NET CORE 入门教程 第一课 基本概念 基本概念 Asp.Net Core Mvc是.NET Core平台下的一种Web应用开发框架 符合Web应用特点 .NET Core跨平台解决方案 ...

最新文章

  1. Tensorflow— 递归神经网络RNN
  2. 《LeetCode力扣练习》第206题 反转链表 Java
  3. 面向连接和无连接的套接字到底有什么区别?
  4. linux要不要home分区,有必要建/home/boot分区吗
  5. Apple 的CEO 吹响了战斗的号角啦!
  6. 更改一个视频文件夹下视频文件的文件名
  7. apollo动态切换mysql数据源_log4j2从Apollo初始化配置并可动态变更
  8. python vb 哪个好学_最难学的七大编程语言,VB 第一,Python垫底,看你学的排第几...
  9. Qt4_简单的图表编辑器
  10. java内存泄露 垃圾回收_Java面试中底层垃圾回收、代码安全、内存泄露
  11. Win7电脑遇到蓝屏,并报错:IRQL NOT LESS OR EQUAL
  12. flink-HA集群搭建和问题记录
  13. python cmap,使用Matplotlib绘图时获取意想不到的输出 - Cmap - Python
  14. 二手闲置物品交易获资本肯定,前景一片大好,普通人的商机在哪?
  15. 最全面的微信小程序渲染图片的方式
  16. 《复杂》作者梅拉妮·米歇尔发文直指AI四大谬论,探究AI几度兴衰背后的根源...
  17. 常数乘以无穷大等于多少_请教一个数学问题:无穷大乘以无穷小等于多少?
  18. Urban Airship Android Client - Google GCM Push
  19. 2021-1-31 pikachu之sql注入
  20. 点击button会自动刷新页面??

热门文章

  1. 阵处理与波束形成学习心得(二)
  2. 2022年第五届中青杯赛题浅评
  3. Qt5 与OpenCV4教程一:Qt5.12安装与OpenCV4.5.0配置
  4. c语言ad转换实验报告,有关单片机AD转换的实验报告
  5. 计算机信息安全认识实习报告
  6. 图像的灰度化、二值化
  7. 人工智能 - 人脸合成 (腾讯AI开放平台)
  8. ZEMAX | 如何使用 ISO 元件制图工具
  9. ad20中如何在pcb里查找器件,AD中原理图如何查找相应的元件?
  10. Python 手写体识别