首页 程序笔记 C#控制台程序如何创建HTTP Rest API

C#控制台程序如何创建HTTP Rest API

前言

本文是关于如何创建Rest API C#控制台应用程序的,在此之前,我们必须知道什么是RESTful api。RESTful API是一种应用程序接口(API),它使用HTTP方法请求GET、PUT、POST和DELETE数据。
RESTful API(也称为RESTfulWeb服务)基于表示状态传输(REST)技术,这是web服务开发中常用的一种体系结构风格和通信方法。
REST技术通常是更健壮的简单对象访问协议(SOAP)技术的首选,因为REST利用的带宽更少,更适合互联网使用。网站的API是允许两个软件程序相互通信的代码。API规定了开发人员编写程序从操作系统或其他应用程序请求服务的正确方式。
浏览器通常使用的REST可以看作是互联网的语言。随着云使用的增加,API正在出现以公开web服务。REST是构建允许用户连接云服务并与云服务交互的API的合理选择。RESTful API被亚马逊、谷歌、LinkedIn和Twitter等网站使用。
在本指南中,我将告诉您如何制作Rest API C#控制台应用程序,从在Microsoft Visual Studio中制作项目开始,直到在浏览器中进行测试。您也可以使用计算机直接遵循此说明。

操作步骤

创建控制台项目

使用Microsoft Visual Studio 2015等创建新的控制台项目应用程序(示例:restservice)
如下图:

编辑app.config

参考内容如下:

?xml version=1.0 encoding=utf-8?      
configuration      
      
  startup      
    supportedRuntime version=v4.0 sku=.NETFramework,Version=v4.5.2 /      
  /startup      
      
  system.serviceModel      
    serviceHostingEnvironment multipleSiteBindingsEnabled=true/      
      
    bindings      
      !--wsHttpBinding--      
      basicHttpBinding      
        binding name=basicHttp openTimeout=00:10:00 closeTimeout=00:10:00 sendTimeout=00:10:00 receiveTimeout=01:00:00 maxBufferPoolSize=2147483647      
          security mode=None      
            !--transport clientCredentialType=None /--      
          /security      
          !--reliableSession enabled=true /--      
        /binding      
      /basicHttpBinding      
      !--/wsHttpBinding--      
      
      webHttpBinding      
        binding name=webHttp openTimeout=00:10:00 closeTimeout=00:10:00 sendTimeout=00:10:00 receiveTimeout=01:00:00 maxBufferPoolSize=2147483647      
          security mode=None      
            !--transport clientCredentialType=None /--      
          /security      
        /binding      
      /webHttpBinding      
    /bindings      
      
    services      
      
      service name=restservice.Service      
        endpoint address =rest binding=webHttpBinding bindingConfiguration=webHttp contract=restservice.IService behaviorConfiguration=web/endpoint      
        host      
          baseAddresses      
            add baseAddress=http://localhost:8080 /      
          /baseAddresses      
        /host      
      /service      
    /services      
      
    behaviors      
      serviceBehaviors      
        behavior name=mexBehaviour      
          serviceMetadata httpGetEnabled=true httpsGetEnabled=true /      
          !-- rest api--      
          serviceDebug includeExceptionDetailInFaults=false/      
        /behavior      
      /serviceBehaviors      
      
      endpointBehaviors      
        behavior name=web      
          webHttp/      
        /behavior      
      /endpointBehaviors      
    /behaviors      
  /system.serviceModel      
      
      
  runtime      
    assemblyBinding xmlns=urn:schemas-microsoft-com:asm.v1      
      dependentAssembly      
        assemblyIdentity name=Newtonsoft.Json publicKeyToken=30ad4fe6b2a6aeed culture=neutral /      
        bindingRedirect oldVersion=0.0.0.0-10.0.0.0 newVersion=10.0.0.0 /      
      /dependentAssembly      
    /assemblyBinding      
  /runtime      
/configuration    

创建IService

如下接口类的C#代码:

using System;    
using System.Collections.Generic;    
using System.Linq;    
using System.Runtime.Serialization;    
using System.ServiceModel;    
using System.ServiceModel.Web;    
using System.Text;    
    
namespace restservice    
{    
    [ServiceContract]    
    public interface IService    
    {    
        [OperationContract]    
        [WebInvoke(Method = GET,    
             ResponseFormat = WebMessageFormat.Json,    
             BodyStyle = WebMessageBodyStyle.Wrapped,    
             UriTemplate = login/{username}/{password})]    
        [return: MessageParameter(Name = Data)]    
        USER DoLogin(string username, string password);    
    }    
    
        
    public class USER    
    {    
        public string username { get; set; }    
        public string password { get; set; }    
        public string firstname { get; set; }    
        public string lastname { get; set; }    
    }    
}   

添加引用

如果出现任何错误,请添加引用。您需要添加如下库的引用:

创建Service方法

我们需要创建一个函数来返回请求。我们将创建一个名为Service的新文件,内容如下所示:

using System;    
using System.Collections.Generic;    
using System.Linq;    
using System.Text;    
using System.Threading.Tasks;    
    
namespace restservice    
{    
    public class Service : IService    
    {    
        public USER DoLogin(string user, string pass)    
        {    
            try    
            {    
                USER data = new USER();    
    
                if (user == camellabs  pass == camellabs)    
                {    
                    data.username = user;    
                    data.password = pass;    
                    data.firstname = ecco;    
                    data.lastname = suprastyo;    
                }    
    
                return data;    
            }    
            catch (Exception ex)    
            {    
                return null;    
            }    
        }    
    }    
}   

编辑Program类

Program类是一个控制台应用程序,它是启动应用程序的主要入口点。它使用WebHostBuilder实例配置并启动web API主机和web服务器。按如下方式编辑Program类:

using System;    
using System.Collections.Generic;    
using System.Linq;    
using System.ServiceModel;    
using System.ServiceModel.Description;    
using System.ServiceModel.Web;    
using System.Text;    
using System.Threading.Tasks;    
    
namespace restservice    
{    
    class Program    
    {    
        static void Main(string[] args)    
        {    
            WebServiceHost hostWeb = new WebServiceHost(typeof(restservice.Service));    
            ServiceEndpoint ep = hostWeb.AddServiceEndpoint(typeof(restservice.IService), new WebHttpBinding(), );    
            ServiceDebugBehavior stp = hostWeb.Description.Behaviors.FindServiceDebugBehavior();    
            stp.HttpHelpPageEnabled = false;    
            hostWeb.Open();    
    
            Console.WriteLine(Service Host started @  + DateTime.Now.ToString());    
    
            Console.Read();    
        }    
    }    
}    

运行程序

在Microsoft Visual Studio 2015中以调试或发布模式运行应用程序。
测试应用程序(如果已经在浏览器中运行),如下所示:

站心网

前言 本文是关于如何创建Rest API C#控制台应用程序的,在此之前,我们必须知道什么是RESTful api。RESTful..

为您推荐

gRPC和REST API对比和选择

在现代 Web 开发和微服务架构中,gRPC 和 REST API 是最常见的通信协议。两者各有优劣,适用于不同的应用场景。本文将分别介绍 gRPC 和 REST API,并对它们的区别进行分析,帮助开发者根据需求选择合适的技术方案。g..

彩虹目录列表程序v1.5源码下载

彩虹目录列表是一款用PHP开发的目录列表程序,无需数据库,安装简单,使用方便。功能特点:在线预览图片、视频、音频、文本文件、Markdown文件、Office文档等自动识别目录下的README.md文件并展示(类GitHub)后台管..

谈谈程序猿的职业方向

大学生在校期间可能会有这样的疑问:将来就业干啥好呢?如果你是学计算机的,将来想进入软件和互联网行业,恭喜,这是个好行业,薪水很高, 也不需靠关系,一切靠实力说话,不需要有个好爸爸。坏处是,这个行业需要..

.NET 主程序的.dll.config文件有什么用?

.dll.config 文件通常是在开发过程中自动生成的,它的主要作用是为某个类库(.dll 文件)提供一个独立的配置文件,以便开发者可以为该类库单独定义或测试配置项。以下是生成 .dll.config 文件的原因和机制:1. 配置..

一个简单的大转盘抽奖程序(附.NetCore Demo源码)

最近闲下来在做一些demo,现在讲一下做的一个简单的大转盘抽奖demo,前端lottery,layui,后端.net core,sqlsugar,数据库用的mysql1.前端实现:前端用的是基于开源的lottery,其中有些改动的,使得前端可以自适应pc端..

关于程序员的职业规划

对于绝大部分从事互联网、程序员的群体来说,看中的不仅是一个白领工作,更重要的是他高薪资的待遇,就当前来说,IT行业发展速度突飞猛进,就业方向和前景更是百家争鸣,如果对自己没有一个明确的目标而漫无目的,那..

从程序媛角度去看项目管理

需求管理下图描述的是程序员从接到需求到开发环节的过程:一般我们首先会收到产品的PRD或交互稿,被询问今天什么时间点是否有空,进行需求评审。时光匆匆,回想起刚毕业那时,我望着冗长的PRD,直接跳过背景、目的等..

ASP.NET如何将Views文件夹从项目分离

将 Views 文件夹从 ASP.NET 项目中分离是一个常见需求,比如为了实现模块化或分层架构。以下是实现此功能的完整步骤,从项目中分离 Views 文件夹,将其移到另一个独立的文件夹或项目中,并确保视图渲染仍然正常。1. ..

如何让AI写出Google认可的文章?

让 AI 写出 Google 认可的文章,核心在于满足 Google 的搜索排名算法要求。这些要求通常围绕以下几个关键点展开:内容质量、用户体验 和 SEO 优化。以下是详细指导:一、内容质量确保文章原创且有价值避免抄袭:Goog..

ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构

在 ASP.NET 中,使用 Entity Framework (EF) 创建并连接 SQLite 数据库是一种轻量级、高效的数据库管理方式。以下是详细步骤:安装必要的 NuGet 包安装EntityFrameworkCore.Sqlite包:Install-Package Microsoft.Ent..

如何从.NET Framework迁移到.NET Core或.NET 6/7?

从 .NET Framework 迁移到 .NET Core 或 .NET 6/7 是一个提升性能和跨平台能力的关键过程。以下是迁移的主要步骤和注意事项:迁移步骤1. 评估当前项目依赖项检查:确保所有第三方库和NuGet包都有与 .NET Core/.NET 6..

如何优化ASP.NET Core应用的性能?

优化ASP.NET Core应用性能需要从代码、数据库、配置、服务器和部署等多个层面进行综合考虑。以下是一些优化ASP.NET Core应用性能的关键方法和技巧:1. 代码级优化使用异步编程:避免阻塞线程,通过async和await处理I..

chrome 开发者工具如何查看元素:hover时的样式

在 Chrome 开发者工具中查看元素的 :hover 样式,可以通过以下步骤实现:打开开发者工具:右键点击页面中的元素,然后选择“检查(Inspect)”或按下 F12 或 Ctrl + Shift + I (Windows) / Cmd + Option +..

如何防止web应用DOS攻击?

防止web应用DOS攻击的最好的方法是什么? 如何防止web应用DOS攻击? 与所有的拒绝服务(DOS)攻击相关的一件事是他们都不可能避免。最好的方法是把重点放在减少影响DOS攻击的方法上。如果你有一个网络,黑客想要玩一玩..

数据库SQL Server2014和SQL Server2019的区别和如何选择?

SQL Server 2014和SQL Server 2019是微软公司发布的两个版本的数据库管理系统,它们在性能、安全性以及可扩展性等方面各有特点。在选择这两个数据库版本时,需要根据系统需求、预算状况以及技术团队的熟悉程度等因素..

MVC跨域问题 Response for preflight has invalid HTTP status code 405

公司项目H5调用接口遇到Response for preflight has invalid HTTP status code 405这样的错误,是使用PUT方式提交请求接口。Content-Type设置为application/json,JS代码如下:$.ajax({type:"PUT",url:"http://172.1..

MySQL如何建数据库

MySQL是一款非常流行的关系型数据库管理系统。无论是在企业还是个人项目中,都经常使用MySQL数据库。在使用MySQL之前,需要先创建一个数据库。本文将介绍如何建立MySQL数据库。一、安装MySQL在开始建立MySQL数据库之..

.NET Core 3.0创建一个单独的可执行文件

一个独立的应用程序是一个很好的方式来共享您的应用程序,因为所有的组件、运行时和框架都包含在应用程序中。您只需提供application.exe文件,而不必担心其他计算机上是否存在框架或运行时安装状态。.NET Core 3.0预..

.NET Core MVC应用程序创建教程

本文主要介绍如何创建一个.NET Core MVC应用程序。和大家一起了解一下.NET Core MVC项目中各个文件的作用。首先准备工作,大家需要安装VS2017 15.7.2版本,安装.NET Core2.0,安装VS的时候选择安装.NET Core相关功能..

IIS中.NET Core报错HTTP Error 500.31 - ANCM Failed to Find Native Dependencies

在IIS部署.NET Core网站报错HTTP Error 500.31 - ANCM Failed to Find Native Dependencies。原因是需要安装.NET Core运行时和ASP.NET Hosting。1 安装.NET Core运行时,目前最新的是ASP.NET Core 运行时 6.0.10(可..

发表回复

返回顶部