C# API接口
一、 利用ashx搭建
参考文章:https://blog.csdn.net/ZYD45/article/details/79939475
-
创建ASP.NET Web应用程序
-
添加 .ashx 文件
-
编写代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; namespace WebApplication1.API { /// <summary> /// MyHandler 的摘要说明 /// </summary> public class MyHandler: IHttpHandler { public void ProcessRequest(HttpContext context) { HandlerResultModel mHandlerResult = null; string sActionType = context.Request.Params.Get("ActionType") == null ? "" : context.Request["ActionType"].Trim(); string callback = HttpContext.Current.Request["jsoncallback"]; try { //接口1 if (sActionType.Equals("Query")) { string sDate = context.Request.Params.Get("Date") == null ? "" : context.Request["Date"].Trim(); DataSet ds = Query(sDate); mHandlerResult = new HandlerResultModel("T", ds, "success"); } //接口2 else if (sActionType.Equals("Test")) { mHandlerResult = new HandlerResultModel("T", "", "success"); } } catch (Exception ex) { mHandlerResult = new HandlerResultModel("F", "", ex.Message); } //转换为Json格式 context.Response.ContentType = "application/json"; context.Response.ContentEncoding = System.Text.Encoding.UTF8; string sJsonResult = Newtonsoft.Json.JsonConvert.SerializeObject(mHandlerResult); context.Response.Write(callback + "(" + sJsonResult + ")"); context.Response.End(); } /// <summary> /// 数据库查询 /// </summary> /// <param name="Date">日期</param> /// <returns></returns> public DataSet Query(string Date) { string sConnection= "Server={sqlIP};Integrated Security=no;User Id={sqlID};PWD={sqlPassword};initial catalog = {sqlTablename}; Connect Timeout = 60000;"; string sql = string.Format($@"SELECT MachineName,StationNo,RunningTime,PowerOnTime,PowerOffTime,MoNoCount,OEE FROM EquFarming WHERE CreateDate>='{Date}'"); //连接数据库查询数据并获取记录 DataSet ds = SqlHelper.ExecuteDataset(sConnection, CommandType.Text, sql); if (ds.Tables.Count < 1) { throw new Exception("获取数据库出错"); } return ds; } }
HandlerResultModel类(用于规范 response 格式)
namespace WebApplication1 { [Serializable] public class HandlerResultModel { private string sFlag; private object oResult; private string sErrorMessage; public HandlerResultModel() { this.sFlag = ""; this.oResult = ""; this.sErrorMessage = ""; } public HandlerResultModel(string Flag, object Result, string ErrorMessage) { this.sFlag = Flag; this.oResult = Result; this.sErrorMessage = ErrorMessage; } public string Flag { get { return sFlag; } set { sFlag = value; } } public object Result { get { return oResult; } set { oResult = value; } } public string ErrorMessage { get { return sErrorMessage; } set { sErrorMessage = value; } } } }
-
启动项目,将地址改为接口地址,就可以得到接口传输的数据了。
(JSON的显示使用了JsonHandler插件,可以按照在chrome浏览器)
二、创建ASP.NET CORE Web API
参考文章:https://www.yisu.com/zixun/508327.html
- 创建 ASP.NET CORE Web API 项目,取消配置HTTPS选项
- 添加 API控制器
- 编写代码
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace WebAPI.Controllers { [Route("api/[controller]/[action]")]//一级路由 [ApiController] public class ValuesController : ControllerBase { [HttpGet("{name}/{id}/{date}")] //通过get请求的子路由,如果这里不写()里面的话,则URL采用api/values/SignIn?name=value的方式传值 //如果写在()里面,则可以通过api/values/signin/values的方式传值 public string SignIn(string name,int id,string date) { return $"测试接口1:输入参数为{name},{id},{date}" ; } [HttpGet] public string SignOut(string name) { return "测试接口2:" + name; } } }
- 启动项目