首页 > 代码库 > 使用控制台程序搭建WebApi
使用控制台程序搭建WebApi
原文参考:
ASP.NET Web Api 2.2: Create a Self-Hosted OWIN-Based Web Api from Scratch
新建控制台程序,引入Owin包
PM> Install-Package Microsoft.AspNet.WebApi.OwinSelfHost -Pre
添加Startup类
public class Startup { public void Configuration(IAppBuilder app) { var webApiConfiguration = ConfigureWebApi(); // Use the extension method provided by the WebApi.Owin library: app.UseWebApi(webApiConfiguration); } private HttpConfiguration ConfigureWebApi() { var config = new HttpConfiguration(); config.Routes.MapHttpRoute( "DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional }); return config; } }
添加Models、Controllers文件夹,添加Company、CompaniesController
public class Company { [Key] public int Id { get; set; } public string Name { get; set; } }
public class CompaniesController : ApiController { ApplicationDbContext _Db = new ApplicationDbContext(); public IEnumerable<Company> Get() { return _Db.Companies; } public async Task<Company> Get(int id) { var company = await _Db.Companies.FirstOrDefaultAsync(c => c.Id == id); if (company == null) { throw new HttpResponseException( System.Net.HttpStatusCode.NotFound); } return company; } public async Task<IHttpActionResult> Post(Company company) { if (company == null) { return BadRequest("Argument Null"); } var companyExists = await _Db.Companies.AnyAsync(c => c.Id == company.Id); if (companyExists) { return BadRequest("Exists"); } _Db.Companies.Add(company); await _Db.SaveChangesAsync(); return Ok(); } public async Task<IHttpActionResult> Put(Company company) { if (company == null) { return BadRequest("Argument Null"); } var existing = await _Db.Companies.FirstOrDefaultAsync(c => c.Id == company.Id); if (existing == null) { return NotFound(); } existing.Name = company.Name; await _Db.SaveChangesAsync(); return Ok(); } public async Task<IHttpActionResult> Delete(int id) { var company = await _Db.Companies.FirstOrDefaultAsync(c => c.Id == id); if (company == null) { return NotFound(); } _Db.Companies.Remove(company); await _Db.SaveChangesAsync(); return Ok(); } }
添加EntityFramework包,添加ApplicationDbContext
namespace ConsoleWebApi.Models { public class ApplicationDbContext : DbContext { public ApplicationDbContext() : base("MyDatabase") { } public IDbSet<Company> Companies { get; set; } } public class ApplicationDbInitializer : DropCreateDatabaseAlways<ApplicationDbContext> { protected override void Seed(ApplicationDbContext context) { base.Seed(context); context.Companies.Add(new Company { Name = "Microsoft" }); context.Companies.Add(new Company { Name = "Google" }); context.Companies.Add(new Company { Name = "Apple" }); } } }
App.Config中添加连接字符串
<connectionStrings> <add name="MyDatabase" connectionString="Data Source=.;Initial Catalog=Test;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" providerName="System.Data.SqlClient"/> </connectionStrings>
入口Main中添加代码
static void Main(string[] args) { Console.WriteLine("Initializing and seeding database..."); Database.SetInitializer(new ApplicationDbInitializer()); var db = new ApplicationDbContext(); int count = db.Companies.Count(); Console.WriteLine("Initializing and seeding database with {0} company records...", count); string baseUri = "http://localhost:8080"; Console.WriteLine("Starting web Server..."); WebApp.Start<Startup>(baseUri); Console.WriteLine("Server running at {0} - press Enter to quit. ", baseUri); Console.ReadLine(); }
启动程序,打开http://localhost:8080/api/companies/1
即可看到结果。
使用控制台程序搭建WebApi
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。