.net中web api有7种方式
1.GET
获取资源,例如查询数据,安全。
2.POST
创建资源,例如插入数据,不安全。
3.PUT
更新特定资源,例如更新数据,不安全。
4.DELETE
删除特定资源,例如删除数据,不安全。
5.PATCH
对资源进行部分更新,例如更新数据,不安全
6.HEAD
查询返回文件的头部信息,安全。
7.OPTIONS
获取指定资源所支持的操作,安全。
1.首先建立webapi程序
2.点击启动
3.把api修改成自己使用的
删除WeatherForecastController.cs 和WeatherForecast.cs
建立自己的类
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace WebApplication3.Controllers
{
/// <summary>
/// 11
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
public class demo
{
/// <summary>
/// Hello
/// </summary>
/// <returns></returns>
[HttpGet]
public ActionResult<string> Get()
{
return "Hello World!";
}
/// <summary>
/// 两数相加
/// </summary>
/// <param name="num1"></param>
/// <param name="num2"></param>
/// <returns></returns>
[HttpGet]
public ActionResult<int> Sum(int num1, int num2)
{
return num1 + num2;
}
/// <summary>
/// 的防守打法
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
[HttpPost]
public ActionResult<int> Subtract(Param param)
{
int result = param.num1 - param.num2;
return result;
}
public class Param
{
/// <summary>
/// 第一个数
/// </summary>
public int num1 { get; set; }
/// <summary>
/// 第二个数
/// </summary>
public int num2 { get; set; }
}
}
}
4.运行后效果
5.注释需要增加以下代码
// 获取xml文件名
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
// 获取xml文件路径
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
// 添加控制器层注释,true表示显示控制器注释
c.IncludeXmlComments(xmlPath, true);
并且这里需要打钩,否则报错
效果
打开路径,直接启动
启动效果:
致辞,webapi建立完成了。
下面用CS客户端去访问webapi
1.winform或者WPF都可以。我前台界面就不写了。我这里是WPF界面调用。
2.post和get代码
public static string HttpPost(string url, string body)
{
//ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.Accept = "text/html, application/xhtml+xml, */*";
request.ContentType = "application/json";
byte[] buffer = encoding.GetBytes(body);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
public static string HttpGet(string url)
{
//ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.Accept = "text/html,application/xhtml+xml,*/*";
request.ContentType = "application/json";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
3.必须增加以下代码,否则会报错。
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{ // 总是接受
return true;
}
4.调用POST
string ss1 = HttpPost("https://localhost:5001/api/demo/Subtract", "{\"num1\":2,\"num2\":3}");
5.调用GET
string ss = HttpGet(@"https://localhost:5001/api/demo/get");
6.整体代码
拓展:
还可以使用 postman提供的方法,更加方便,快速。
1.在nuget中下载RestSharp