C# 搭建一个简单的WebApi项目

摘要:
2.打开App_ Start文件夹中WebApiConfig.cs文件的默认路由配置信息为“WebApi的默认路由通过http方法(get/post/put/delete)匹配相应的操作”new{id=RouteParameter.可选});“actionapi/{controller}/{action}/{id}”;

原文地址:https://blog.csdn.net/lwpoor123/article/details/78285148

WebApi相关文章:

C# 搭建一个简单的Web API项目
C# WebApi 路由配置
c# WebApi之解决跨域问题:Cors
c# WebApi之身份验证:Basic基础认证
c# WebApi之接口返回类型详解
一、创建Web API
1、创建一个新的web API项目

启动VS 2013,并在“开始页”选择“新项目”。或从“文件”菜单选择“新建”,然后选择“项目”。

在“模板”面板中选择“已安装模板”,并展开“Visual C#”节点。选择该节点下的“Web”。在项目模板列表中选择“ASP.NET MVC 4 Web应用程序”。

在“新的ASP.NET MVC 4项目”对话框中选择“Web API”


二、Web API路由配置
1、创建好项目后,文件目录如下:


2、打开App_Start文件夹下的 WebApiConfig.cs 文件
默认路由配置信息为:
WebApi的默认路由是通过http的方法(get/post/put/delete)去匹配对应的action,也就是说webapi的默认路由并不需要指定action的名称。

// Web API 路由
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

我们自定义一个路由配置:

//自定义路由:匹配到action
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "actionapi/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);

url: "{controller}/{action}/{id}"这个定义了我们url的规则,{controller}/{action}定义了路由的必须参数,{id}是可选参数

三、创建Web API方法
1、在Controllers文件夹下新建一个控制器类,添加一个post请求

public class UserInfoController : ApiController
{
//检查用户名是否已注册
private ApiTools tool = new ApiTools();
[HttpPost]
public HttpResponseMessage CheckUserName(string _userName )
{
int num = UserInfoGetCount(_userName);//查询是否存在该用户
if (num > 0)
{
return tool.MsgFormat(ResponseCode.操作失败, "不可注册/用户已注册", "1 " + userName);
}
else
{
return tool.MsgFormat(ResponseCode.成功, "可注册", "0 " + userName);
}
}

private int UserInfoGetCount(string username)
{
//return Convert.ToInt32(SearchValue("select count(id) from userinfo where username='" + username + "'"));
return username == "admin" ? 1 : 0;
}
}

2、添加返回(响应)类

public class ApiTools
{
private string msgModel = "{{\"code\":{0},\"message\":\"{1}\",\"result\":{2}}}";
public ApiTools()
{
}
public HttpResponseMessage MsgFormat(ResponseCode code, string explanation, string result)
{
string r = @"^(\-|\+)?\d+(\.\d+)?$";
string json = string.Empty;
if (Regex.IsMatch(result, r) || result.ToLower() == "true" || result.ToLower() == "false" || result == "[]" || result.Contains('{'))
{
json = string.Format(msgModel, (int)code, explanation, result);
}
else
{
if (result.Contains('"'))
{
json = string.Format(msgModel, (int)code, explanation, result);
}
else
{
json = string.Format(msgModel, (int)code, explanation, "\"" + result + "\"");
}
}
return new HttpResponseMessage { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json") };
}
}

ResponseCode:

public enum ResponseCode
{
操作失败 = 00000,
成功 = 10200,
}

四、调用Web API接口
1、给大家推荐一款比较好用的接口测试软件:
https://www.getpostman.com


2、如果想测试上面写的post方法,启动Web Api项目后,在postman地址栏输入:http://localhost:26753/ActionApi/UserInfo/CheckUserName,添加参数 userName=张三
结果如下:


还记得我们之前自定义的路由信息吗

config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "actionapi/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);

地址栏中的UserInfo 对应路由配置**{controller}参数
CheckUserName 对应路由配置{action}参数
userName=张三 对应 路由配置{id}**参数

免责声明:文章转载自《C# 搭建一个简单的WebApi项目》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇unordered_map的哈希HASH重载——举例unordered_map与pair联合使用通过配置tomcat在浏览器访问非项目中的文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

asp.net web core 部署问题汇总

   记录所有部署时遇到的问题。    微软官网部署说明   转载自:.NET Core 3.0 构建和部署(测试过可以使用)     A    单文件可执行文件(文件体积较大,合并所有依赖)               asp.net core 项目文件(*.csproj)添加以下代码            <RuntimeIdentifier&g...

基于P2P的匿名技术研究

李超 北京图形研究所 摘要:本文针对匿名通信中两种基本技术:Mix和洋葱路由进行了论述,并分析了P2P网络对于Mix网络和传统的洋葱路由的改进和缺陷,论述了基于P2P的匿名通信在提高通信性能和抗攻击能力上的实现技术。 关键词:P2P 洋葱路由 网络 匿名 1、概述  传统意义下的网络安全包括以下四个要素:秘密性(Confidentiality)、完整性(I...

vue项目中vuex的安装和使用

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。详情可参阅vuex官网    https://vuex.vuejs.org/zh/ 1、下载安装vuex 打开IDE(我的是vscode)进入终端,进入项目文件,输入命令行npm install vue...

vue版本更新

之前电脑已经安装 Node环境和 vue-cli脚手架,但是过段时间没有使用,然后现在用 vue-cli 搭建项目的时候,启动服务器的时候报错,无法启动成功,摸索半天,发现是因为 Node和vue-cli 的版本过低,都需要更新,更新过后成功启动...... 以下是 Node 和 vue-cli 更新的总结: 一. vue-cli更新   在百度了好久,...

WiFi密码破解详细图文教程

随着智能移动设备的普及,大家对于WiFi已经不可脱离,每家每户更是必备无线路由。而网络上也出现了形形色色的教程教大家如何破解wifi密码,也就是所谓的“蹭网”,本篇文章将详解一下某些人蹭网(破解WiFi密码)是如何蹭的。 (注:蹭网是不道德的行为,本文仅做技术学习参考,请别做不道德的事情喔!) 在开始破解前需要准备 1、 一个有可破解无线信号的环境。 2、...

selenium+python之iframe学习笔记

一、查看iframe,判断元素是否在iframe上 1.Top Window 如果此处显示的是Top Window,表明元素在首页,不需要切换iframe 2.iframe 如果此处显示是iframe,则需要切换,driver.switch_to.frame() 注意:当此处为空白时,表明有2层iframe  二、切换iframe,可以通过id,nam...