{"action":"created","comment":{"url":"https://api.github.com/repos/aspnet/Docs/pulls/comments/75004918","id":75004918,"diff_hunk":"@@ -1,8 +1,288 @@\n-.. include:: /../common/stub-topic.txt\n+:version: 1.0.0\n \n-|stub-icon| Overview of ASP.NET MVC\n-===================================\n+Overview of ASP.NET Core MVC\n+============================\n \n-.. include:: /../common/stub-notice.txt\n+By `Steve Smith`_\n \n-.. _issue: https://github.com/aspnet/Docs/issues/113\n+ASP.NET Core MVC is a rich framework for building web apps and APIs using the Model-View-Controller design pattern.\n+\n+.. contents:: Sections:\n+  :local:\n+  :depth: 1\n+\n+What is the MVC pattern?\n+------------------------\n+\n+The Model-View-Controller (MVC) architectural pattern separates an application into three main groups of components: Models, Views, and Controllers. This pattern helps to achieve `separation of concerns <http://deviq.com/separation-of-concerns/>`_. Using this pattern, user requests are routed to a Controller which is responsible for working with the Model to perform user actions and/or retrieve results of queries. The Controller chooses the View to display to the user, and provides it with any Model data it requires.\n+\n+The following diagram shows the three main components and which ones reference the others:\n+\n+.. image:: overview/_static/mvc.png\n+\n+This delineation of responsibilities helps you scale the application in terms of complexity because it’s easier to code, debug, and test something (model, view, or controller) that has a single job (and follows the `Single Responsibility Principle <http://deviq.com/single-responsibility-principle/>`_). It's more difficult to update, test, and debug code that has dependencies spread across two or more of these three areas. For example, user interface logic tends to change more frequently than business logic. If presentation code and business logic are combined in a single object, you have to modify an object containing business logic every time you change the user interface. This is likely to introduce errors and require the retesting of all business logic after every minimal user interface change.\n+\n+.. note:: Both the view and the controller depend on the model. However, the model depends on neither the view nor the controller. This is one the key benefits of the separation. This separation allows the model to be built and tested independent of the visual presentation.\n+\n+Model Responsibilities\n+^^^^^^^^^^^^^^^^^^^^^^\n+\n+The Model in an MVC application represents the state of the application and any business logic or operations that should be performed by it. Business logic should be encapsulated in the model, along with any implementation logic for persisting the state of the application. Strongly-typed views will typically use ViewModel types specifically designed to contain the data to display on that view; the controller will create and populate these ViewModel instances from the model.\n+\n+.. note:: There are many ways to organize the model in an app that uses the MVC architectural pattern. Learn more about some `different kinds of model types <http://deviq.com/kinds-of-models/>`_.\n+\n+View Responsibilities\n+^^^^^^^^^^^^^^^^^^^^^\n+\n+Views are responsible for presenting content through the user interface. They use the `Razor view engine`_ to embed .NET code in HTML markup. There should be minimal logic within views, and any logic in them should relate to presenting content. If you find the need to perform a great deal of logic in view files in order to display data from a complex model, consider using a :doc:`View Component </mvc/views/view-components>`, ViewModel, or view template to simplify the view.\n+\n+Controller Responsibilities\n+^^^^^^^^^^^^^^^^^^^^^^^^^^^\n+\n+Controllers are the components that handle user interaction, work with the model, and ultimately select a view to render. In an MVC application, the view only displays information; the controller handles and responds to user input and interaction. In the MVC pattern, the controller is the initial entry point, and is responsible for selecting which model types to work with and which view to render (hence its name - it controls how the app responds to a given request).\n+\n+.. note:: Controllers should not be overly complicated by too many responsibilities. To keep controller logic from becoming overly complex, use the `Single Responsibility Principle <http://deviq.com/single-responsibility-principle/>`_ to push business logic out of the controller and into the domain model.\n+\n+.. tip:: If you find that your controller actions frequently perform the same kinds of actions, you can follow the `Don't Repeat Yourself principle <http://deviq.com/don-t-repeat-yourself/>`_ by moving these common actions into `filters`_.\n+\n+What is ASP.NET Core MVC\n+------------------------\n+\n+The ASP.NET Core MVC framework is a lightweight, open source, highly testable presentation framework optimized for use with ASP.NET Core.\n+\n+ASP.NET Core MVC provides a patterns-based way to build dynamic websites that enables a clean separation of concerns. It gives you full control over markup, supports TDD-friendly development and uses the latest web standards.\n+\n+Features\n+--------\n+\n+ASP.NET Core MVC includes the following features:\n+\n+- `Routing`_\n+- `Model binding`_\n+- `Model validation`_\n+- `Dependency injection`_\n+- `Filters`_\n+- `Areas`_\n+- `Web APIs`_\n+- `Testability`_\n+- `Razor view engine`_\n+- `Strongly typed views`_\n+- `Tag Helpers`_\n+- `View Components`_\n+- `HTML Helpers`_\n+\n+Routing\n+^^^^^^^\n+\n+ASP.NET Core MVC is built on top of :doc:`ASP.NET Core's routing </fundamentals/routing>`, a powerful URL-mapping component that lets you build applications that have comprehensible and searchable URLs. This enables you to define your application's URL naming patterns that work well for search engine optimization (SEO) and for link generation, without regard for how the files on your web server are organized. You can define your routes using a convenient route template syntax that supports route value constraints, defaults and optional values.\n+\n+*Convention-based routing* enables you to globally define the URL formats that your application accepts and how each of those formats maps to a specific action method on given controller. When an incoming request is received, the routing engine parses the URL and matches it to one of the defined URL formats, and then calls the associated controller's action method.\n+\n+\n+.. code-block:: c#\n+\n+  routes.MapRoute(name: \"Default\", template: \"{controller=Home}/{action=Index}/{id?}\");\n+\n+*Attribute routing* enables you to specify routing information by decorating your controllers and actions with attributes that define your application's routes. This means that your route definitions are placed next to the controller and action with which they're associated.\n+\n+.. code-block:: c#\n+  :emphasize-lines: 1,4\n+\n+  [Route(\"api/[controller]\")]\n+  public class ProductsController : Controller\n+  {\n+    [HttpGet(\"{id}\")]\n+    public IActionResult GetProduct(int id)\n+    {\n+      ...\n+    }\n+  }\n+\n+Model binding\n+^^^^^^^^^^^^^\n+\n+ASP.NET Core MVC :doc:`model binding </mvc/models/model-binding>` converts client request data  (form values, route data, query string parameters, HTTP headers) into objects that the controller can handle. As a result, your controller logic doesn't have to do the work of figuring out the incoming request data; it simply has the data as parameters to its action methods.\n+\n+\n+\n+.. code-block:: C#\n+\n+  public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null) { ... }\n+\n+Model validation\n+^^^^^^^^^^^^^^^^\n+\n+ASP.NET Core MVC supports :doc:validation <mvc/models/validation> by decorating your model object with data annotation validation attributes. The validation attributes are check on the client side before values are posted to the server, as well as on the server before the controller action is called.\n+\n+.. code-block:: c#\n+  :emphasize-lines: 4-5,8-9\n+\n+  using System.ComponentModel.DataAnnotations;\n+  public class LoginViewModel\n+  {\n+      [Required]\n+      [EmailAddress]\n+      public string Email { get; set; }\n+\n+      [Required]\n+      [DataType(DataType.Password)]\n+      public string Password { get; set; }\n+\n+      [Display(Name = \"Remember me?\")]\n+      public bool RememberMe { get; set; }\n+  }\n+\n+A controller action:\n+\n+.. code-block:: c#\n+  :emphasize-lines: 3\n+  \n+  public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)\n+  {\n+      if (ModelState.IsValid)\n+      {\n+        // work with the model\n+      }\n+      // If we got this far, something failed, redisplay form\n+      return View(model);\n+  }\n+\n+The framework will handle validating request data both on the client and on the server. Validation logic specified on model types is added to the rendered views as unobtrusive annotations and is enforced in the browser with `jQuery Validation <http://jqueryvalidation.org/>`__.\n+\n+Dependency injection\n+^^^^^^^^^^^^^^^^^^^^\n+\n+ASP.NET Core has built-in support for :doc:`dependency injection (DI) </fundamentals/dependency-injection>`. In ASP.NET Core MVC, :doc:`controllers </mvc/controllers/dependency-injection>` can request needed services through their constructors, allowing them to follow the `Explicit Dependencies Principle <http://deviq.com/explicit-dependencies-principle/>`_:\n+\n+.. literalinclude:: /../common/samples/WebApplication1/src/WebApplication1/Controllers/AccountController.cs\n+  :lines: 17-38\n+  :emphasize-lines: 10-14\n+  :language: c#\n+\n+Your app can also use :doc:`dependency injection in view files </mvc/views/dependency-injection>`, using the ``@inject`` directive:\n+\n+.. code-block:: html\n+  :emphasize-lines: 1\n+\n+  @inject SomeService ServiceName\n+  <!DOCTYPE html>\n+  <html>\n+  <head>\n+    <title>@ServiceName.GetTitle</title>\n+  </head>\n+  <body>\n+    <h1>@ServiceName.GetTitle</h1>\n+  </body>\n+  </html>\n+\n+Filters\n+^^^^^^^\n+\n+:doc:`Filters </mvc/controllers/filters>` help developers encapsulate cross-cutting concerns, like exception handling or authorization. Filters enable running custom pre- and post-processing logic for action methods, and can be configured to run at certain points within the execution pipeline for a given request. Filters can be applied to controllers or actions as attributes (or can be run globally). Several filters (such as ``Authorize``) are included in the framework.\n+\n+.. literalinclude:: /../common/samples/WebApplication1/src/WebApplication1/Controllers/AccountController.cs\n+  :lines: 17-19\n+  :emphasize-lines: 1\n+  :language: c#\n+\n+Areas\n+^^^^^\n+\n+:doc:`Areas </mvc/controllers/areas>` provide a way to partition a large ASP.NET Core MVC Web app into smaller functional groupings. An area is effectively an MVC structure inside an application. In an MVC project, logical components like Model, Controller, and View are kept in different folders, and MVC uses naming conventions to create the relationship between these components. For a large app, it may be advantageous to partition the app into separate high level areas of functionality. For instance, an e-commerce app with multiple business units, such as checkout, billing, and search etc. Each of these units have their own logical component views, controllers, and models.\n+\n+Web APIs\n+^^^^^^^^\n+\n+In addition to being a great platform for building web sites, ASP.NET Core MVC has great support for building Web APIs. You can build services that can reach a broad range of clients including browsers and mobile devices.\n+\n+The framework includes support for HTTP content-negotiation with built-in support for :doc:`formatting data </mvc/models/formatting>` as JSON or XML. Write :doc:`custom formatters </mvc/models/custom-formatters>` to add support for your own formats. \n+\n+Use link generation to enable support for hypermedia. Easily enable support for `cross-origin resource sharing (CORS) <http://www.w3.org/TR/cors/>`__ so that your Web APIs shared across multiple Web applications.\n+\n+Testability\n+^^^^^^^^^^^\n+\n+The framework's use of interfaces and dependency injection make it well-suited to unit testing, and the framework includes features (like a TestHost and InMemory provider for Entity Framework) that make :doc:`integration testing </testing/integration-testing>` quick and easy as well. Learn more about :doc:`testing controller logic </mvc/controllers/testing>`.\n+\n+Razor view engine\n+^^^^^^^^^^^^^^^^^\n+\n+:doc:`ASP.NET Core MVC views </mvc/views/overview>` use the the :doc:`Razor view engine </mvc/views/razor>` to render views. Razor is a compact, expressive and fluid template markup language for defining views using embedded .NET code. Razor is used to dynamically generate web content on the server. Unlike most template syntaxes, you do not need to interrupt your coding to explicitly denote server blocks within your HTML. The parser is smart enough to infer this from your code. This makes creating views in Razor clean, fast and fun!\n+\n+.. code-block:: text\n+\n+  <ul>\n+    @for (int i = 0; i < 5; i++) {\n+      <li>List item @i</li>\n+    }\n+  </ul>\n+\n+Using the Razor view engine you can define :doc:`layouts </mvc/views/layout>`, :doc:`partial views </mvc/views/partial>` and replaceable sections.\n+\n+Strongly typed views\n+^^^^^^^^^^^^^^^^^^^^\n+\n+Razor views in MVC can be strongly typed based on your model. A strongly-typed view explicitly specifies the model type for the view. You can then leverage the compiler and IntelliSense to ensure that references to property names and types in your views are correct:\n+\n+.. code-block:: html\n+\n+  @model IEnumerable<Product>\n+  <ul> \n+      @foreach (Product p in Model) \n+      { \n+          <li>@p.Name</li>\n+      }\n+  </ul>\n+\n+Tag Helpers\n+^^^^^^^^^^^\n+\n+:doc:`Tag Helpers </mvc/views/tag-helpers/intro>` enable you to dynamically generate or modify the HTML returned to the client. You can use tag helpers to define custom tags or to modify the behavior of existing tags. Tag Helpers bind to specific elements based on the element name and its attributes. Tag Helpers give you all of the benefits of server-side rendering while still preserving an HTML editing experience.","path":"aspnet/mvc/overview.rst","position":245,"original_position":245,"commit_id":"1eeb138110a48caabcf5ab324081963c8eb23540","original_commit_id":"1eeb138110a48caabcf5ab324081963c8eb23540","user":{"login":"spboyer","id":7681382,"avatar_url":"https://avatars.githubusercontent.com/u/7681382?v=3","gravatar_id":"","url":"https://api.github.com/users/spboyer","html_url":"https://github.com/spboyer","followers_url":"https://api.github.com/users/spboyer/followers","following_url":"https://api.github.com/users/spboyer/following{/other_user}","gists_url":"https://api.github.com/users/spboyer/gists{/gist_id}","starred_url":"https://api.github.com/users/spboyer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spboyer/subscriptions","organizations_url":"https://api.github.com/users/spboyer/orgs","repos_url":"https://api.github.com/users/spboyer/repos","events_url":"https://api.github.com/users/spboyer/events{/privacy}","received_events_url":"https://api.github.com/users/spboyer/received_events","type":"User","site_admin":false},"body":"I can go with either of these versions.","created_at":"2016-08-16T19:37:24Z","updated_at":"2016-08-16T19:37:24Z","html_url":"https://github.com/aspnet/Docs/pull/1774#discussion_r75004918","pull_request_url":"https://api.github.com/repos/aspnet/Docs/pulls/1774","_links":{"self":{"href":"https://api.github.com/repos/aspnet/Docs/pulls/comments/75004918"},"html":{"href":"https://github.com/aspnet/Docs/pull/1774#discussion_r75004918"},"pull_request":{"href":"https://api.github.com/repos/aspnet/Docs/pulls/1774"}}},"pull_request":{"url":"https://api.github.com/repos/aspnet/Docs/pulls/1774","id":81020312,"html_url":"https://github.com/aspnet/Docs/pull/1774","diff_url":"https://github.com/aspnet/Docs/pull/1774.diff","patch_url":"https://github.com/aspnet/Docs/pull/1774.patch","issue_url":"https://api.github.com/repos/aspnet/Docs/issues/1774","number":1774,"state":"open","locked":false,"title":"MVC Overview","user":{"login":"ardalis","id":782127,"avatar_url":"https://avatars.githubusercontent.com/u/782127?v=3","gravatar_id":"","url":"https://api.github.com/users/ardalis","html_url":"https://github.com/ardalis","followers_url":"https://api.github.com/users/ardalis/followers","following_url":"https://api.github.com/users/ardalis/following{/other_user}","gists_url":"https://api.github.com/users/ardalis/gists{/gist_id}","starred_url":"https://api.github.com/users/ardalis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ardalis/subscriptions","organizations_url":"https://api.github.com/users/ardalis/orgs","repos_url":"https://api.github.com/users/ardalis/repos","events_url":"https://api.github.com/users/ardalis/events{/privacy}","received_events_url":"https://api.github.com/users/ardalis/received_events","type":"User","site_admin":false},"body":"Fixes #113 ","created_at":"2016-08-11T19:56:50Z","updated_at":"2016-08-16T19:37:24Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e4424fe17671b6421a9b5db72d96a2ba9345776d","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/aspnet/Docs/pulls/1774/commits","review_comments_url":"https://api.github.com/repos/aspnet/Docs/pulls/1774/comments","review_comment_url":"https://api.github.com/repos/aspnet/Docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/aspnet/Docs/issues/1774/comments","statuses_url":"https://api.github.com/repos/aspnet/Docs/statuses/1eeb138110a48caabcf5ab324081963c8eb23540","head":{"label":"aspnet:ardalis/mvc-overview","ref":"ardalis/mvc-overview","sha":"1eeb138110a48caabcf5ab324081963c8eb23540","user":{"login":"aspnet","id":6476660,"avatar_url":"https://avatars.githubusercontent.com/u/6476660?v=3","gravatar_id":"","url":"https://api.github.com/users/aspnet","html_url":"https://github.com/aspnet","followers_url":"https://api.github.com/users/aspnet/followers","following_url":"https://api.github.com/users/aspnet/following{/other_user}","gists_url":"https://api.github.com/users/aspnet/gists{/gist_id}","starred_url":"https://api.github.com/users/aspnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspnet/subscriptions","organizations_url":"https://api.github.com/users/aspnet/orgs","repos_url":"https://api.github.com/users/aspnet/repos","events_url":"https://api.github.com/users/aspnet/events{/privacy}","received_events_url":"https://api.github.com/users/aspnet/received_events","type":"Organization","site_admin":false},"repo":{"id":28239455,"name":"Docs","full_name":"aspnet/Docs","owner":{"login":"aspnet","id":6476660,"avatar_url":"https://avatars.githubusercontent.com/u/6476660?v=3","gravatar_id":"","url":"https://api.github.com/users/aspnet","html_url":"https://github.com/aspnet","followers_url":"https://api.github.com/users/aspnet/followers","following_url":"https://api.github.com/users/aspnet/following{/other_user}","gists_url":"https://api.github.com/users/aspnet/gists{/gist_id}","starred_url":"https://api.github.com/users/aspnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspnet/subscriptions","organizations_url":"https://api.github.com/users/aspnet/orgs","repos_url":"https://api.github.com/users/aspnet/repos","events_url":"https://api.github.com/users/aspnet/events{/privacy}","received_events_url":"https://api.github.com/users/aspnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/aspnet/Docs","description":"Documentation for ASP.NET Core","fork":false,"url":"https://api.github.com/repos/aspnet/Docs","forks_url":"https://api.github.com/repos/aspnet/Docs/forks","keys_url":"https://api.github.com/repos/aspnet/Docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aspnet/Docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aspnet/Docs/teams","hooks_url":"https://api.github.com/repos/aspnet/Docs/hooks","issue_events_url":"https://api.github.com/repos/aspnet/Docs/issues/events{/number}","events_url":"https://api.github.com/repos/aspnet/Docs/events","assignees_url":"https://api.github.com/repos/aspnet/Docs/assignees{/user}","branches_url":"https://api.github.com/repos/aspnet/Docs/branches{/branch}","tags_url":"https://api.github.com/repos/aspnet/Docs/tags","blobs_url":"https://api.github.com/repos/aspnet/Docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aspnet/Docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aspnet/Docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/aspnet/Docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aspnet/Docs/statuses/{sha}","languages_url":"https://api.github.com/repos/aspnet/Docs/languages","stargazers_url":"https://api.github.com/repos/aspnet/Docs/stargazers","contributors_url":"https://api.github.com/repos/aspnet/Docs/contributors","subscribers_url":"https://api.github.com/repos/aspnet/Docs/subscribers","subscription_url":"https://api.github.com/repos/aspnet/Docs/subscription","commits_url":"https://api.github.com/repos/aspnet/Docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/aspnet/Docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/aspnet/Docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/aspnet/Docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/aspnet/Docs/contents/{+path}","compare_url":"https://api.github.com/repos/aspnet/Docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aspnet/Docs/merges","archive_url":"https://api.github.com/repos/aspnet/Docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aspnet/Docs/downloads","issues_url":"https://api.github.com/repos/aspnet/Docs/issues{/number}","pulls_url":"https://api.github.com/repos/aspnet/Docs/pulls{/number}","milestones_url":"https://api.github.com/repos/aspnet/Docs/milestones{/number}","notifications_url":"https://api.github.com/repos/aspnet/Docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aspnet/Docs/labels{/name}","releases_url":"https://api.github.com/repos/aspnet/Docs/releases{/id}","deployments_url":"https://api.github.com/repos/aspnet/Docs/deployments","created_at":"2014-12-19T17:38:02Z","updated_at":"2016-08-16T14:10:16Z","pushed_at":"2016-08-16T18:54:32Z","git_url":"git://github.com/aspnet/Docs.git","ssh_url":"git@github.com:aspnet/Docs.git","clone_url":"https://github.com/aspnet/Docs.git","svn_url":"https://github.com/aspnet/Docs","homepage":"","size":57950,"stargazers_count":661,"watchers_count":661,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1187,"mirror_url":null,"open_issues_count":163,"forks":1187,"open_issues":163,"watchers":661,"default_branch":"master"}},"base":{"label":"aspnet:master","ref":"master","sha":"267f3fde7ffa7689340e82eb66b883865babdb19","user":{"login":"aspnet","id":6476660,"avatar_url":"https://avatars.githubusercontent.com/u/6476660?v=3","gravatar_id":"","url":"https://api.github.com/users/aspnet","html_url":"https://github.com/aspnet","followers_url":"https://api.github.com/users/aspnet/followers","following_url":"https://api.github.com/users/aspnet/following{/other_user}","gists_url":"https://api.github.com/users/aspnet/gists{/gist_id}","starred_url":"https://api.github.com/users/aspnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspnet/subscriptions","organizations_url":"https://api.github.com/users/aspnet/orgs","repos_url":"https://api.github.com/users/aspnet/repos","events_url":"https://api.github.com/users/aspnet/events{/privacy}","received_events_url":"https://api.github.com/users/aspnet/received_events","type":"Organization","site_admin":false},"repo":{"id":28239455,"name":"Docs","full_name":"aspnet/Docs","owner":{"login":"aspnet","id":6476660,"avatar_url":"https://avatars.githubusercontent.com/u/6476660?v=3","gravatar_id":"","url":"https://api.github.com/users/aspnet","html_url":"https://github.com/aspnet","followers_url":"https://api.github.com/users/aspnet/followers","following_url":"https://api.github.com/users/aspnet/following{/other_user}","gists_url":"https://api.github.com/users/aspnet/gists{/gist_id}","starred_url":"https://api.github.com/users/aspnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspnet/subscriptions","organizations_url":"https://api.github.com/users/aspnet/orgs","repos_url":"https://api.github.com/users/aspnet/repos","events_url":"https://api.github.com/users/aspnet/events{/privacy}","received_events_url":"https://api.github.com/users/aspnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/aspnet/Docs","description":"Documentation for ASP.NET Core","fork":false,"url":"https://api.github.com/repos/aspnet/Docs","forks_url":"https://api.github.com/repos/aspnet/Docs/forks","keys_url":"https://api.github.com/repos/aspnet/Docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aspnet/Docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aspnet/Docs/teams","hooks_url":"https://api.github.com/repos/aspnet/Docs/hooks","issue_events_url":"https://api.github.com/repos/aspnet/Docs/issues/events{/number}","events_url":"https://api.github.com/repos/aspnet/Docs/events","assignees_url":"https://api.github.com/repos/aspnet/Docs/assignees{/user}","branches_url":"https://api.github.com/repos/aspnet/Docs/branches{/branch}","tags_url":"https://api.github.com/repos/aspnet/Docs/tags","blobs_url":"https://api.github.com/repos/aspnet/Docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aspnet/Docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aspnet/Docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/aspnet/Docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aspnet/Docs/statuses/{sha}","languages_url":"https://api.github.com/repos/aspnet/Docs/languages","stargazers_url":"https://api.github.com/repos/aspnet/Docs/stargazers","contributors_url":"https://api.github.com/repos/aspnet/Docs/contributors","subscribers_url":"https://api.github.com/repos/aspnet/Docs/subscribers","subscription_url":"https://api.github.com/repos/aspnet/Docs/subscription","commits_url":"https://api.github.com/repos/aspnet/Docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/aspnet/Docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/aspnet/Docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/aspnet/Docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/aspnet/Docs/contents/{+path}","compare_url":"https://api.github.com/repos/aspnet/Docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aspnet/Docs/merges","archive_url":"https://api.github.com/repos/aspnet/Docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aspnet/Docs/downloads","issues_url":"https://api.github.com/repos/aspnet/Docs/issues{/number}","pulls_url":"https://api.github.com/repos/aspnet/Docs/pulls{/number}","milestones_url":"https://api.github.com/repos/aspnet/Docs/milestones{/number}","notifications_url":"https://api.github.com/repos/aspnet/Docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aspnet/Docs/labels{/name}","releases_url":"https://api.github.com/repos/aspnet/Docs/releases{/id}","deployments_url":"https://api.github.com/repos/aspnet/Docs/deployments","created_at":"2014-12-19T17:38:02Z","updated_at":"2016-08-16T14:10:16Z","pushed_at":"2016-08-16T18:54:32Z","git_url":"git://github.com/aspnet/Docs.git","ssh_url":"git@github.com:aspnet/Docs.git","clone_url":"https://github.com/aspnet/Docs.git","svn_url":"https://github.com/aspnet/Docs","homepage":"","size":57950,"stargazers_count":661,"watchers_count":661,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1187,"mirror_url":null,"open_issues_count":163,"forks":1187,"open_issues":163,"watchers":661,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/aspnet/Docs/pulls/1774"},"html":{"href":"https://github.com/aspnet/Docs/pull/1774"},"issue":{"href":"https://api.github.com/repos/aspnet/Docs/issues/1774"},"comments":{"href":"https://api.github.com/repos/aspnet/Docs/issues/1774/comments"},"review_comments":{"href":"https://api.github.com/repos/aspnet/Docs/pulls/1774/comments"},"review_comment":{"href":"https://api.github.com/repos/aspnet/Docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/aspnet/Docs/pulls/1774/commits"},"statuses":{"href":"https://api.github.com/repos/aspnet/Docs/statuses/1eeb138110a48caabcf5ab324081963c8eb23540"}}}}
{"actor":{"display_login":"spboyer"}}