为做事器后端逻辑选择措辞的问题是险些每个开拓职员最主要的问题之一,特殊是对付初学者。目前已经有很多不同的措辞:Java,.NET(C#,VD),Ruby,Python,Perl,JavaScript(Node.js),Go,C ++。
除了这些措辞的语法特色外,还有许多其他问题/问题,例如扩展的可能性,不同类型数据库的利用,高学习曲线,容错哀求,大量数据等等。上。
哪种措辞最受欢迎?你该当利用哪一个?大概有人会推举PHP,它具有丰富的功能和较低的学习曲线。然而,事实仍旧是现在最常用的措辞是Java和.NET。
本教程先容如何利用C#(ASP.NET)构建自己的Web做事器(Web API)。主要的是要把稳,要托管您的做事器,您将须要基于Windows的托管。
先决条件
我想我们可以开始了。首先,当我们利用C#时,您须要利用Microsoft Visual Studio(您可以在Microsoft官方网站上获取它)。
此外,您还须要启用IIS(Internet信息做事)。在Windows中启用它很随意马虎:
在Windows 10中打开“掌握面板”,单击“程序”,然后找到“程序和功能”部分,并单击“打开或关闭Windows功能”。在这里,找到Internet信息做事。单击其前面的+图标以展开其下的所有可用选项。您可以找到FTP做事器,Web管理工具和万维网做事。现在启用Web管理工具。单击“确定”,将添加所选功能(或多个功能)并将其运用于Windows。第1步:创建一个新项目打开Microsoft Visual Studio并创建一个新项目(文件 - >新建 - >项目)。选择“已安装”模板,选择“Visual C#”,然后选择“Web”。在可用模板列表中,选择“ASP.NET Web运用程序(.NET Framework)”。给你的项目命名(对付我的演示,我把“webapi”),然后单击OK。
不才一个模态对话框中,您可以选择任何得当的模板。让我们选择Web API,这样它就会为项目准备所有基本的初始文件。单击确定。
完成。现在,您可以在办理方案资源管理器中浏览天生的文件夹和文件 有运用程序配置,帮助页面数据,一些掌握器,字体,CSS和JS文件。
路由表
默认情形下,做事器利用位于App_Start / WebApiConfig.cs中的路由表。
把稳routeTemplate: \"大众api/{controller}/{id}\"大众,它阐明了API路由。
现在,让我们做一个基本的例子。在本教程中,我们将为用户准备一个API,这是每个别系的一个非常通用的实体/工具。
添加用户模型该模型代表用户,因此我们将包括各种字段,如ID,姓名,电子邮件,电话和角色。
在Solution Explorer中,右键单击Models文件夹,选择Add,然后选择Class。然后供应一个类名:User。模型类已准备就绪。
现在我们只添加我们决定添加的所有字段:
public class User
{
public int id { get; set; }
public string name { get; set; }
public string email { get; set; }
public string phone { get; set; }
public int role { get; set; }
}
添加用户掌握器在Web API中,掌握器是处理所有HTTP要求的工具。在办理方案资源管理器中,右键单击“掌握器”。选择Add,然后选择Controller。
在给定的对话框中,选择具有读/写操作的Web API 2 Controller。将掌握器命名为UsersController。它将为掌握器准备所有适当的CRUD操作。
在本文中,我利用虚拟用户列表准备了一个基本示例:
public class UsersController : ApiController
{
private User[] users = new User[]
{
new User { id = 1, name = \公众Haleemah Redfern\公众, email = \"大众email1@mail.com\"大众, phone = \"大众01111111\"大众, role = 1},
new User { id = 2, name = \"大众Aya Bostock\公众, email = \"大众email2@mail.com\公众, phone = \"大众01111111\"大众, role = 1},
new User { id = 3, name = \"大众Sohail Perez\"大众, email = \"大众email3@mail.com\"大众, phone = \公众01111111\"大众, role = 1},
new User { id = 4, name = \"大众Merryn Peck\"大众, email = \"大众email4@mail.com\"大众, phone = \"大众01111111\公众, role = 2},
new User { id = 5, name = \公众Cairon Reynolds\"大众, email = \"大众email5@mail.com\"大众, phone = \公众01111111\公众, role = 3}
};
// GET: api/Users
[ResponseType(typeof(IEnumerable<User>))]
public IEnumerable<User> Get()
{
return users;
}
// GET: api/Users/5
public IHttpActionResult Get(int id)
{
var product = users.FirstOrDefault((p) => p.id == id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
...
第2步:支配现在,您可以构建办理方案(在Visual Studio中按Ctrl + Shift + B)。一旦构建成功,您就可以运行它。单击F5,它将在您的浏览器中自动在您确当田主机的可用端口(例如http:// localhost:61024 /)中打开。最有可能的是,您不肯望它始终在Visual Studio中运行,因此最好将其保留为做事。
在这种情形下,我们可以利用IIS(Internet信息做事)将其支配到本地专用做事器。这很大略。
首先,打开IIS,在“站点”下面的左侧 - 添加新网站(从右侧面板或右键单击“站点”)。请输入以下详细信息:站点名称,“webapi.localhost.net”; 物理路径,“C:\ projects \ webapi”(办理方案所在的位置); 绑定 - http或https; 主机名是相同的,即“webapi.localhost.net”。单击确定。
IIS该当在webapi.localhost.net上运行Web API做事。
现在,如果您考试测验在浏览器中打开webapi.localhost.net,它将无法打开我们创建的结果。这是由于浏览器考试测验将此地址(webapi.localhost.net)解析为全局域。为了将此域名映射到本地做事器,我们须要修合法田主机文件。在Windows(v10)上,hosts文件存在于C:\ Windows \ system32 \ drivers \ etc文件夹中。该文件没有自己的扩展名,它是“主机”文件。
将其复制到另一个位置并在编辑器中打开它
您须要将以下内容添加到此文件的末端:
#Web API主机
127 .0.0.1 webapi.localhost.net
现在,您须要将修正后的文件放回C:\ Windows \ system32 \ drivers \ etc文件夹中。由于此文件夹默认受Windows保护,因此您将收到谢绝访问警告。因此,您须要复制“以管理员身份”文件。
文件更新后,webapi.localhost.net应从您的localhost(C:\ projects \ webapi)加载。
测试API是时候测试我们为Web做事器创建的API方法了: api/users and api/users/{id}。 在浏览器中打开http://webapi.localhost.net/api/users。你该当得到以下输出:
在我们创建可从IDE外部访问的外部API时,我们须要从另一个页面测试我们的API。最大略的方法是通过开拓工具栏(存在于任何当代浏览器中)。常日在按F12时会激活它。转到“掌握台”标签。下面我准备了两个小例子,你可以用来测试API
如果jQuery可用,您可以利用:
$.ajax({
type: \"大众GET\公众,
url: 'http://webapi.localhost.net/api/users',
success: (data) => {
console.log(data);
}
});
否则,利用本机JavaScript,您可以利用以下代码:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://webapi.localhost.net/api/users');
xhr.onload = function() {
console.log(xhr.response);
};
xhr.send();
您很可能会收到以下缺点:
对预检要求的相应未通过访问掌握检讨:要求的资源上不存在“Access-Control-Allow-Origin”标头。
缘故原由是常规网页可以利用该 XMLHttpRequest 工具从远程做事器发送和吸收数据,但它们受到相同原始策略的限定。扩展不是那么有限。扩展可以与其来源之外的远程做事器通信,只要它首先要求跨源权限即可。
跨源资源共享(CORS)是一种机制,它利用其他HTTP标头见告浏览器让在一个源(域)上运行的Web运用程序有权从不同来源的做事器访问所选资源。
调度跨源资源共享(CORS)为理解决这个问题,我们须要在我们的办理方案中启用CORS。在Visual Studio中,打开包管理掌握台(可在屏幕底部,缺点列表和输出之间)。
运行以下命令:
Install-Package Microsoft.AspNet.WebApi.Cors
这将安装WebApi.Cors参考。然后打开“App_Start \ WebApiConfig.cs”文件。加config.EnableCors();之前config.MapHttpAttributeRoutes();
然后返回我们的UsersController.cs并[EnableCors(origins: \"大众\"大众, headers: \"大众\"大众, methods: \"大众\公众)]在类定义之前添加。
末了 - 再次重修项目。然后考试测验再次测试API; 现在它该当事情。
我希望你喜好我们的文章,你创造它很有用。