首页 > 学院 > 开发设计 > 正文

自建 webapi rest

2019-11-11 06:41:21
字体:
来源:转载
供稿:网友

环境准备

1.Install-package  EntityFramework

2.建立model模型:可以用ODA.net(DataFirst ,codeFirst),当然也可以LINQ to SQL类,也可以手动创建

namespace pxtest.Models{    public partial class PRotData    {       [Key,Column(Order=1)]        public DateTime ActualDateTime { get; set; }        public string Identifier { get; set; }      [Key, Column(Order = 2)]        public string ActualTrackingPoint { get; set; }        public string PLC { get; set; }        public string SkidNo { get; set; }        public string HoleCode { get; set; }        public string LotNumber { get; set; }        public string Color { get; set; }        public string Model { get; set; }        public string BodyPaintCounter { get; set; }        public string PrimerColor { get; set; }        public string TimeSec { get; set; }    }}

3.建立Context:context可以自动创建,也可以手动创建。

 public class pxContext:DbContext    {        public pxContext() : base("name=DefaultConnection") { }        public virtual DbSet<TrackingPointCode> TrackingPointCodes { get; set; }        public virtual DbSet<Production_plan> Production_plans { get; set; }        public virtual DbSet<ProtData> ProtDatas { get; set; }        protected override void OnModelCreating(DbModelBuilder modelBuilder)        {           // base.OnModelCreating(modelBuilder);           modelBuilder.Entity<ProtData>().HasKey(t => new { t.ActualDateTime, t.ActualTrackingPoint });                        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();        }    }

modelBuilder.Entity<ProtData>().HasKey(t => new { t.ActualDateTime, t.ActualTrackingPoint }); 为某表设置复合主键

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();使调用的表为单数形式

4.建立apicontroller

创建的方法可以用web api 空建,web api 操作(entity framework)的创建。

4.1 在global.cs中

    public class WebApiapplication : System.Web.HttpApplication    {        protected void Application_Start()        {            AreaRegistration.RegisterAllAreas();            GlobalConfiguration.Configure(WebApiConfig.Register);            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);            RouteConfig.RegisterRoutes(RouteTable.Routes);            BundleConfig.RegisterBundles(BundleTable.Bundles);            GlobalConfiguration.Configuration.Formatters.xmlFormatter.SupportedMediaTypes.Clear();        }    }

 GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();支持Json;

4.2 

private pxContext db = new pxContext();        // GET api/ProtDatas        public IQueryable<ProtData> GetProtDatas()        {            return db.ProtDatas;        }        // GET api/ProtDatas        public IQueryable<ProtData> GetProtDatas(string pt)        {            return db.ProtDatas.Where(p=>p.ActualTrackingPoint==pt);        }        // GET api/ProtDatas/5               public IQueryable<ProtData> GetProtDatas(string pt, int startUTC)        {            //1481459940000 1481459940000000                        DateTime dt = new DateTime(1970, 1, 1).AddHours(8).AddSeconds(startUTC);            DateTime curdt = DateTime.Now;            IQueryable<ProtData> protdatas= db.ProtDatas.Where(p=>p.ActualTrackingPoint==pt && p.ActualDateTime>=dt && p.ActualDateTime<=curdt);                       return protdatas;        }

5.对api rest的管理

加入swashbuckle-Swagger for WebApi

加入Swagger UI for .Net

项目属性中的生成xml被勾选

加入后更改SwaggerConfig.cs中的设置

 c.IncludeXmlComments(GetXmlCommentsPath());

 private static string GetXmlCommentsPath()        {            return string.Format("{0}/bin/px.XML", System.AppDomain.CurrentDomain.BaseDirectory);            // throw new System.NotImplementedException();        }

对SwaggerNet.cs中进行注示

//[assembly: WebActivator.PreApplicationStartMethod(typeof(px.App_Start.SwaggerNet), "PreStart")]//[assembly: WebActivator.PostApplicationStartMethod(typeof(px.App_Start.SwaggerNet), "PostStart")]


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表