MyException - 我的异常网
当前位置:我的异常网» Web前端 » ASP.NET 五绯诲垪鏁欑▼ (鍏? 鍦?MVC6 涓垱寤?Web

ASP.NET 五绯诲垪鏁欑▼ (鍏? 鍦?MVC6 涓垱寤?Web API

www.MyException.Cn  网友分享于:2015-02-06  浏览:0次
ASP.NET 5绯诲垪鏁欑▼ (鍏?: 鍦?MVC6 涓垱寤?Web API

ASP.NET 5.0 鐨勪富瑕佺洰鏍囦箣涓€鏄粺涓€MVC 鍜?Web API 妗嗘灦搴旂敤銆?/p>

鎺ヤ笅鏉ュ嚑绡囨枃绔犱腑鎮ㄤ細浜嗚В浠ヤ笅鍐呭锛?/p>

  • ASP.NET MVC 6 涓垱寤虹畝鍗曠殑web API銆?/li>
  • 濡備綍浠庣┖鐨勯」鐩ā鏉夸腑鍚姩锛屽強娣诲姞鎺т欢鍒板簲鐢ㄤ腑銆?/li>
  • 濡備綍閰嶇疆 ASP.NET 5.0 绠¢亾銆?/li>
  • 鍦?IIS 澶栧绔嬮儴缃插簲鐢ㄣ€?/li>

鏈枃鐨勭洰鐨勬槸浠庣┖鐨勯」鐩紑濮嬶紝閫愭璁茶В濡備綍鍒涘缓搴旂敤銆傚綋鐒讹紝鎮ㄤ篃鍙互浠庘€淪tarter Web鈥?妯℃澘寮€濮嬶紝瀹冮粯璁ゅ寘鍚簡MVC 6銆佹潈闄愩€佽褰曠瓑鍏朵粬妯″潡锛屽悓鏃朵篃鍐呯疆浜嗘湁鏁堢殑鎺у埗鍣ㄥ拰瑙嗗浘鍦ㄥ叾涓€?/p>

鍒涘缓绌虹殑 ASP.NET 5 椤圭洰

鎵撳紑 Visual Studio 2015銆傜偣鍑?File 鑿滃崟锛岄€夋嫨 New > Project銆?/strong>

鍦?New Project 瀵硅瘽妗嗕腑锛岀偣鍑?Templates > Visual C# > Web锛岄€夋嫨 ASP.NET Web Application 椤圭洰妯℃澘銆傚懡鍚嶄负 "TodoApi"锛岀偣鍑?OK銆?/p>

鍦?New ASP.NET Project 瀵硅瘽妗嗕腑锛岄€夋嫨 "ASP.NET 5.0 Empty" 妯℃澘銆?/p>

涓嬮潰鐨勬晥鏋滃浘灞曠ず浜嗗伐绋嬬粨鏋勶細

宸ョ▼鍖呭惈浠ヤ笅鏂囦欢锛?/p>

  • global.json 鍖呭惈浜嗚В鍐虫柟妗堢骇鍒殑璁剧疆锛屽厑璁稿伐绋嬪埌宸ョ▼涔嬮棿鐨勫紩鐢ㄣ€?/li>
  • project.json 鍖呭惈浜嗗伐绋嬬骇鍒殑璁剧疆銆?/li>
  • Project_Readme.html聽 涓?readme 鏂囦欢銆?/li>
  • Startup.cs 鍖呭惈鍚姩鍜岄厤缃唬鐮併€?/li>

Startup.cs 鏂囦欢涓殑Startup 绫伙紝閰嶇疆浜?ASP.NET 闇€姹傜閬撱€傚綋浣犱娇鐢ㄧ┖鐨勯」鐩ā鏉匡紝Startup 绫讳笉浼氭湁浠讳綍瀹炶川鎬х殑浠g爜鍔犲叆鍒扮閬撲腑锛?/p>

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        // Nothing here!
    }
}

鐜板湪锛屼綘鍙互杩愯搴旂敤浜嗭紝浣嗗綋鍓嶇殑搴旂敤娌℃湁浠讳綍鍔熻兘銆傛帴涓嬫潵鎴戜滑浼氭ā鎷?Starter Web" 椤圭洰妯℃澘鏉ユ坊鍔犲姛鑳斤紝渚嬪 MVC 6銆丒ntity Framework銆佽韩浠介獙璇併€佽褰曠瓑鍔熻兘銆?/p>

娣诲姞娆㈣繋鐣岄潰

鎵撳紑 project.json 鏂囦欢銆傝鏂囦欢鍖呭惈浜嗗伐绋嬭缃唴瀹广€?code>dependencies 閮ㄥ垎鐢ㄤ簬鏍囨敞闇€瑕佺殑NuGet 鍖呭拰绫诲簱銆傛坊鍔?Microsoft.AspNet.Diagnostics 鍖呭埌鍒楄〃涓細

"dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta1",
    // Add this: 
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta1"
},

杈撳叆鏃讹紝 Visual Studio 浼氭彁渚涙櫤鑳芥彁绀猴細

鎺ヤ笅鏉ワ紝鎵撳紑 Startup.cs 鏂囦欢锛屾坊鍔犱互涓嬩唬鐮侊細

using System;
using Microsoft.AspNet.Builder;


namespace TodoApi
{
    public class Startup
    {
        public void Configure(IApplicationBuilder app)
        {
            // New code
            app.UseWelcomePage();
        }
    }
}

鐐瑰嚮聽 F5 杩愯锛孷isual Studio 鍚姩娴忚鍣紝鎵撳紑浜?http://localhost:port/锛岀鍙e彿鏄竴涓猇isual Studio闅忔満鍒嗛厤鐨勬暟瀛椼€傝繍琛屾晥鏋滃涓嬶細

娆㈣繋鐣岄潰鏄楠岃繍琛屾晥鏋滅殑蹇€熷叆鍙o紝鏃犻渶缂栧啓浠g爜銆?/p>

鍒涘缓 Web API

鍦ㄦ湰绔犺妭涓紝鎮ㄥ皢鍒涘缓涓€涓?ToDo 浜嬮」绠$悊鍒楄〃鍔熻兘API銆傞鍏堬紝鎴戜滑闇€瑕佹坊鍔?ASP.NET MVC 6 鍒板簲鐢ㄤ腑銆?/p>

娣诲姞 MVC 6 鍒?project.json 鏂囦欢鐨勪緷璧栧垪琛ㄤ腑锛?/p>

"dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta1",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta1",
    // New:
    "Microsoft.AspNet.Mvc": "6.0.0-beta1"
},

鎺ヤ笅鏉ワ紝娣诲姞 MVC 闇€姹傜閬撳埌 Startup.cs 鏂囦欢涓紝

  • 浣跨敤 using 澹版槑Microsoft.Framework.DependencyInjection銆?/code>
  • 娣诲姞浠ヤ笅鏂规硶鍒?Startup 绫讳腑銆?/li>
public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
}

  • 涓嬮潰杩欐浠g爜娣诲姞浜?MVC 6 闇€瑕佺殑鎵€鏈変緷璧栭」锛屼細鑷姩鍦ㄥ惎鍔ㄦ椂璋冪敤ConfigureServices 銆?/p>

    • 鍦ㄩ厤缃柟娉曚腑娣诲姞浠ヤ笅浠g爜锛?code>UseMvc 鏂规硶鐢ㄤ簬娣诲姞 MVC 6 鍒扮閬撱€?/li>
    public void Configure(IApplicationBuilder app)
    
    {
    
        // New:
    
        app.UseMvc();
    
    }

    浠ヤ笅鏄畬鏁寸殑 Startup 绫讳唬鐮侊細

    using System;
    
    using Microsoft.AspNet.Builder;
    
    using Microsoft.AspNet.Http;
    
    // New using:
    
    using Microsoft.Framework.DependencyInjection;
    
    
    
    namespace TodoApi
    
    {
    
        public class Startup
    
        {
    
            // Add this method:
    
            public void ConfigureServices(IServiceCollection services)
    
            {
    
                services.AddMvc();
    
            }
    
    
    
            public void Configure(IApplicationBuilder app)
    
            {
    
                // New:
    
                app.UseMvc();
    
                app.UseWelcomePage();
    
            }
    
        }
    
    }

    娣诲姞 Model

    model 浠h〃搴旂敤鐨勬暟鎹煙銆傚湪鏈ず渚嬩腑锛宮odel 涓瓨鍌?ToDo 椤广€?娣诲姞浠ヤ笅绫诲埌椤圭洰涓細

    using System.ComponentModel.DataAnnotations;
    
    
    
    namespace TodoApi.Models
    
    {
    
        public class TodoItem
    
        {
    
            public int Id { get; set; }
    
            [Required]
    
            public string Title { get; set; }
    
            public bool IsDone { get; set; }
    
        }
    
    }

    涓轰簡淇濇寔椤圭洰鐨勬暣娲侊紝鎴戝垱寤轰簡 Models 鏂囦欢澶圭敤浜庡瓨鏀?Model 绫伙紝褰撶劧杩欎笉鏄繀瑕佺殑鎿嶄綔銆?/p>

    娣诲姞 Controller

    娣诲姞 controller 绫荤敤浜庡鐞?HTTP 璇锋眰銆傛坊鍔犱互涓嬬被鍒伴」鐩腑锛?/p>

    using Microsoft.AspNet.Mvc;
    
    using System.Collections.Generic;
    
    using System.Linq;
    
    using TodoApi.Models;
    
    
    
    namespace TodoApi.Controllers
    
    {
    
    
    
        [Route("api/[controller]")]
    
        public class TodoController : Controller
    
        {
    
            static readonly List<TodoItem> _items = new List<TodoItem>()
    
            {
    
                new TodoItem { Id = 1, Title = "First Item" }
    
            };
    
    
    
            [HttpGet]
    
            public IEnumerable<TodoItem> GetAll()
    
            {
    
                return _items;
    
            }
    
    
    
            [HttpGet("{id:int}", Name = "GetByIdRoute")]
    
            public IActionResult GetById (int id)
    
            {
    
                var item = _items.FirstOrDefault(x => x.Id == id);
    
                if (item == null)
    
                {
    
                    return HttpNotFound();
    
                }
    
    
    
                return new ObjectResult(item);
    
            }
    
    
    
            [HttpPost]
    
            public void CreateTodoItem([FromBody] TodoItem item)
    
            {
    
                if (!ModelState.IsValid)
    
                {
    
                    Context.Response.StatusCode = 400;
    
                }
    
                else
    
                {
    
                    item.Id = 1+ _items.Max(x => (int?)x.Id) ?? 0;
    
                    _items.Add(item);
    
    
    
                    string url = Url.RouteUrl("GetByIdRoute", new { id = item.Id }, 
    
                        Request.Scheme, Request.Host.ToUriComponent());
    
    
    
                    Context.Response.StatusCode = 201;
    
                    Context.Response.Headers["Location"] = url;
    
                }
    
            }
    
    
    
            [HttpDelete("{id}")]
    
            public IActionResult DeleteItem(int id)
    
            {
    
                var item = _items.FirstOrDefault(x => x.Id == id);
    
                if (item == null)
    
                {
    
                    return HttpNotFound();
    
                }
    
                _items.Remove(item);
    
                return new HttpStatusCodeResult(204); // 201 No Content
    
            }
    
        }
    
    }

    鍚屾牱锛屾垜鍒涘缓浜?Controllers 鏂囦欢澶圭敤浜庡瓨鍌?controller銆?/p>

    鍦ㄥ悗缁殑绔犺妭涓垜浠皢杩涗竴姝ラ槓杩板叧浜?Controller 鐨勪唬鐮併€備互涓嬫槸 controller 瀹炵幇鐨勪竴浜涘熀纭€鍔熻兘锛?/p>

    image

    渚嬪锛屼笅闈㈡槸鑾峰彇 ToDo 椤圭洰鐨?HTTP 璇锋眰鐨勶細

    GET http://localhost:5000/api/todo HTTP/1.1
    
    User-Agent: Fiddler
    
    Host: localhost:5000

    涓嬮潰鏄?response 娴侊細

    HTTP/1.1 200 OK
    
    Content-Type: application/json;charset=utf-8
    
    Server: Microsoft-HTTPAPI/2.0
    
    Date: Thu, 30 Oct 2014 22:40:31 GMT
    
    Content-Length: 46
    
    
    
    [{"Id":1,"Title":"First Item","IsDone":false}]

    鍚庣画绔犺妭涓垜浠皢闃愯堪浠ヤ笅鍐呭锛?/p>

  • 濡備綍閰嶇疆 ASP.NET 5.0 绠¢亾銆?/li>
  • 鍦?IIS 澶栧绔嬮儴缃插簲鐢ㄣ€?

    鍘熸枃閾炬帴锛?a href="http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6">Create a Web API in MVC 6

绯诲垪鏂囩珷鐩綍锛?/h5>
  • ASP.NET 5绯诲垪鏁欑▼ (涓€)锛氶璇绘柊鐗规€?/span>

  • ASP.NET 5绯诲垪鏁欑▼ (浜?锛欻ello World

  • ASP.NET 5绯诲垪鏁欑▼ (涓?锛歷iew components浠嬬粛

  • ASP.NET 5绯诲垪鏁欑▼ (鍥?锛氬悜瑙嗗浘涓坊鍔犳湇鍔″拰鍙戝竷搴旂敤鍒板叕鏈変簯

  • ASP.NET 5绯诲垪鏁欑▼ (浜?锛氬湪Visual Studio 2015涓娇鐢℅runt銆丅ower寮€鍙慦eb绋嬪簭

文章评论

60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
鲜为人知的编程真相
鲜为人知的编程真相
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
每天工作4小时的程序员
每天工作4小时的程序员
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
10个调试和排错的小建议
10个调试和排错的小建议
程序员都该阅读的书
程序员都该阅读的书
中美印日四国程序员比较
中美印日四国程序员比较
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
我是如何打败拖延症的
我是如何打败拖延症的
旅行,写作,编程
旅行,写作,编程
漫画:程序员的工作
漫画:程序员的工作
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
代码女神横空出世
代码女神横空出世
程序员的鄙视链
程序员的鄙视链
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
程序员必看的十大电影
程序员必看的十大电影
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
总结2014中国互联网十大段子
总结2014中国互联网十大段子
那些争议最大的编程观点
那些争议最大的编程观点
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
Java程序员必看电影
Java程序员必看电影
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
如何成为一名黑客
如何成为一名黑客
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
为什么程序员都是夜猫子
为什么程序员都是夜猫子
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
 程序员的样子
程序员的样子
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序员和编码员之间的区别
程序员和编码员之间的区别
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
一个程序员的时间管理
一个程序员的时间管理
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有