自建 webapi rest

环境准备

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")]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值