使用C#的后端Web API:循序渐进教程

如何在VS中创建基于.NET的后端应用程序,该应用程序使用C#语言从Web API中提取。让我们开始吧!

为服务器后端逻辑选择语言的问题是几乎每个开发人员最重要的问题之一,特别是对于初学者。目前已经有很多不同的语言: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/5public 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; 现在它应该工作。

我希望你喜欢我们的文章,你发现它很有用。

C# 使用WebApi交互信息是一种常见的方式,可以实现不同应用程序之间的通信和数据交换。下面是一个简单的示例来演示如何使用C#WebApi进行交互: 1. 首先,确保你已经在项目中添加了对System.Net.Http的引用。 2. 创建一个HttpClient对象,用于发送HTTP请求和接收响应。 ```csharp using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (HttpClient client = new HttpClient()) { // 设置WebApi的基本地址 client.BaseAddress = new Uri("https://api.example.com"); try { // 发送GET请求,并获取响应 HttpResponseMessage response = await client.GetAsync("/api/endpoint"); // 确保请求成功 response.EnsureSuccessStatusCode(); // 读取响应内容 string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } catch (HttpRequestException e) { Console.WriteLine($"请求失败:{e.Message}"); } } } } ``` 在上面的示例中,我们使用HttpClient发送了一个GET请求到WebApi的`/api/endpoint`端点,并获取了响应内容。你可以根据实际情况进行适当地修改和扩展。 注意:上述示例中使用的是异步方法,这是推荐的做法,因为它可以避免阻塞主线程。你也可以使用同步方法,如`client.Get()`,但请注意它可能会导致应用程序的阻塞。 希望这个示例能对你有所帮助!如果你有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值