国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[入門一]C# webApi創(chuàng)建、與發(fā)布、部署、api調(diào)用

這篇具有很好參考價(jià)值的文章主要介紹了[入門一]C# webApi創(chuàng)建、與發(fā)布、部署、api調(diào)用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一.創(chuàng)建web api項(xiàng)目

1.1、項(xiàng)目創(chuàng)建

c# webapi,c# Web API實(shí)例

c# webapi,c# Web API實(shí)例

c# webapi,c# Web API實(shí)例

c# webapi,c# Web API實(shí)例

MVC架構(gòu)的話,它會(huì)有view-model-control三層,在web api中它的前端和后端是分離的,所以只在項(xiàng)目中存在model-control兩層

c# webapi,c# Web API實(shí)例

1.2、修改路由

打開App_Start文件夾下,WebApiConfig.cs ,修改路由,加上{action}/ ,這樣就可以在api接口中通過接口函數(shù)名,來導(dǎo)向我們希望調(diào)用的api函數(shù),否則,只能通過controller來導(dǎo)向,就可能會(huì)造成有相同參數(shù)的不同名函數(shù),沖突。其中,{id}是api接口函數(shù)中的參數(shù)。
?

默認(rèn)路由配置信息為:【默認(rèn)路由模板無法滿足針對(duì)一種資源一種請(qǐng)求方式的多種操作。】
WebApi的默認(rèn)路由是通過http的方法(get/post/put/delete)去匹配對(duì)應(yīng)的action,也就是說webapi的默認(rèn)路由并不需要指定action的名稱

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace WebAPI
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API 配置和服務(wù)

            // Web API 路由
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                //修改路由,加上{action}/ ,這樣就可以在api接口中通過接口函數(shù)名,來導(dǎo)向我們希望調(diào)用的api函數(shù),
                //否則,只能通過controller來導(dǎo)向,就可能會(huì)造成有相同參數(shù)的不同名函數(shù),沖突。其中,{id}是api接口函數(shù)中的參數(shù)
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

二.測(cè)試案例

寫一個(gè)測(cè)試的api函數(shù),并開始執(zhí)行(不調(diào)試)

2.1、我們?cè)趍odel文件夾中添加一個(gè)類movie

c# webapi,c# Web API實(shí)例

c# webapi,c# Web API實(shí)例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebAPI.Models
{
    public class movie
    {

        public string name { get; set; }
        public string director { get; set; }
        public string actor { get; set; }
        public string type { get; set; }
        public int price { get; set; }



    }
}

2.1.2、我們?cè)趍odel文件夾中添加一個(gè)類Product

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebAPI.Models
{
    public class Product
    {

        public int Id { get; set; }
        public string Name { get; set; }
        public string Category { get; set; }
        public decimal Price { get; set; }



    }
}

2.2、在controller文件夾下添加web api控制器,命名改為TestController

c# webapi,c# Web API實(shí)例

c# webapi,c# Web API實(shí)例

c# webapi,c# Web API實(shí)例

c# webapi,c# Web API實(shí)例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebAPI.Models;

namespace WebAPI.Controllers
{
    public class TestController : ApiController
    {


        movie[] mymovie = new movie[]
        {
            new movie { name="海蒂和爺爺",director="阿蘭.葛斯彭納",actor="阿努克",type="動(dòng)漫",price=28},
            new movie { name="云南蟲谷",director="佚名",actor="潘粵明",type="驚悚",price=32},
            new movie { name="沙海",director="佚名",actor="吳磊",type="驚悚",price=28},
            new movie { name="千與千尋",director="宮崎駿",actor="千尋",type="動(dòng)漫",price=28}
        };
        public IEnumerable<movie> GetAllMovies()
        {
            return mymovie;

        }
        public IHttpActionResult GetMovie(string name)    //異步方式創(chuàng)建有什么作用
        {
            var mov = mymovie.FirstOrDefault((p) => p.name == name);
            if (mymovie == null)
            {
                return NotFound();
            }
            return Ok(mymovie);
        }





    }
}

這樣就完成了一個(gè)web?api實(shí)例的編寫

2.2.2、在controller文件夾下添加web api控制器,命名改為productsController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebAPI.Models;

namespace WebAPI.Controllers
{
    public class productsController : ApiController
    {

        Product[] products = new Product[]
        {
            new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 },
            new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M },
            new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
        };

        public IEnumerable<Product> GetAllProducts()
        {
            return products;
        }

        public IHttpActionResult GetProduct(int id)
        {
            var product = products.FirstOrDefault((p) => p.Id == id);
            if (product == null)
            {
                return NotFound();
            }
            return Ok(product);
        }




    }
}

2.2.3、在controller文件夾下添加web api控制器,命名改為MyController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace WebAPI.Controllers
{
    public class MyController : ApiController
    {


        [HttpGet]
        public string MyExample(string param1, int param2)
        {
            string res = "";
            res = param1 + param2.ToString();
            //這邊可以進(jìn)行任意操作,比如數(shù)據(jù)存入或者取出數(shù)據(jù)庫等
            return res;
        }




    }
}

三.本地調(diào)試

3.1?運(yùn)行調(diào)試,以本地 localhost(或127.0.0.1)形式訪問
①點(diǎn)擊工具欄【IIS Express】

c# webapi,c# Web API實(shí)例

②瀏覽地址輸入接口,看是否可以訪問

localhost:44381/api/products/GetAllProducts

注意:

這里的路徑是寫你的控制器前綴名稱(Control文件下的productsController控制器文件的前綴)

c# webapi,c# Web API實(shí)例

https://localhost:44381/api/Test/GetAllMovies

c# webapi,c# Web API實(shí)例

2)直接在瀏覽器中調(diào)試也行

c# webapi,c# Web API實(shí)例

想要調(diào)試的值,可以將WebApiConfig.cs的代碼修如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace WebAPI
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API 配置和服務(wù)

            // Web API 路由
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                //修改路由,加上{action}/ ,這樣就可以在api接口中通過接口函數(shù)名,來導(dǎo)向我們希望調(diào)用的api函數(shù),
                //否則,只能通過controller來導(dǎo)向,就可能會(huì)造成有相同參數(shù)的不同名函數(shù),沖突。其中,{id}是api接口函數(shù)中的參數(shù)
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );


            //去掉xml返回格式、設(shè)置json字段命名采用
            var appXmlType =
                config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
            config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);





        }
    }
}

ok,顯示成功

localhost:44381/api/My/MyExample?param1=&param2=2

c# webapi,c# Web API實(shí)例

WebApi項(xiàng)目實(shí)例3-1

3-1 (1)新添加到控制器UserInfoController,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebAPI.Models;

namespace WebAPI.Controllers
{
    public class UserInfoController : ApiController
    {

        //檢查用戶名是否已注冊(cè)
        private ApiTools tool = new ApiTools();

        //  [HttpPost]

        [HttpGet]
        public HttpResponseMessage CheckUserName(string _userName)
        {
            int num = UserInfoGetCount(_userName);//查詢是否存在該用戶
            if (num > 0)
            {
                return tool.MsgFormat(ResponseCode.操作失敗, "不可注冊(cè)/用戶已注冊(cè)", "1 " + _userName);
            }
            else
            {
                return tool.MsgFormat(ResponseCode.成功, "可注冊(cè)", "0 " + _userName);
            }
        }

        private int UserInfoGetCount(string username)
        {
            //return Convert.ToInt32(SearchValue("select count(id) from userinfo where username='" + username + "'"));
            return username == "admin" ? 1 : 0;
        }





    }
}

添加返回(響應(yīng))類ApiTools

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Web;

namespace WebAPI.Models
{
    //添加返回(響應(yīng))類
    public class ApiTools
    {
        private string msgModel = "{{\"code\":{0},\"message\":\"{1}\",\"result\":{2}}}";
        public ApiTools()
        {
        }
        public HttpResponseMessage MsgFormat(ResponseCode code, string explanation, string result)
        {
            string r = @"^(\-|\+)?\d+(\.\d+)?$";
            string json = string.Empty;
            if (Regex.IsMatch(result, r) || result.ToLower() == "true" || result.ToLower() == "false" || result == "[]" || result.Contains('{'))
            {
                json = string.Format(msgModel, (int)code, explanation, result);
            }
            else
            {
                if (result.Contains('"'))
                {
                    json = string.Format(msgModel, (int)code, explanation, result);
                }
                else
                {
                    json = string.Format(msgModel, (int)code, explanation, "\"" + result + "\"");
                }
            }
            return new HttpResponseMessage { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json") };
        }
    }


    public enum ResponseCode
    {
        操作失敗 = 00000,
        成功 = 10200,
    }



}

3-1 (2)本地調(diào)試,調(diào)用Web API接口

運(yùn)行調(diào)試,以本地 localhost(或127.0.0.1)形式訪問
①點(diǎn)擊工具欄【IIS Express】

②瀏覽地址輸入接口,看是否可以訪問

https://localhost:44381/api/UserInfo/CheckUserName?_userName=wxd

c# webapi,c# Web API實(shí)例

c# webapi,c# Web API實(shí)例

3.2 運(yùn)行調(diào)試,以本地IP(192.168.6.152)形式訪問
127.0.0.1是回路地址,來檢驗(yàn)本機(jī)TCP/IP協(xié)議棧,實(shí)際使用過程中服務(wù)端不在本機(jī),是外部地址,要用IP地址測(cè)試。
外部用戶采用IP+端口號(hào)訪問,如下圖瀏覽器訪問不了,400錯(cuò)誤。
?

c# webapi,c# Web API實(shí)例

解決方案:

因?yàn)?IIS 7 采用了更安全的 web.config 管理機(jī)制,默認(rèn)情況下會(huì)鎖住配置項(xiàng)不允許更改。

以管理員身份運(yùn)行命令行【此處不要操作】

C:\windows\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers

c# webapi,c# Web API實(shí)例

c# webapi,c# Web API實(shí)例

如果modules也被鎖定,再運(yùn)行

C:\windows\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

c# webapi,c# Web API實(shí)例

客戶端程序:調(diào)用接口分為以下幾種情況:
通過Javascript 和 jQuery 調(diào)用 Web API
右鍵資源管理器解決方案下面的項(xiàng)目,添加-新建項(xiàng)

c# webapi,c# Web API實(shí)例

將index.html內(nèi)容替換成:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Product App</title>
</head>
<body>

    <div>
        <h2>All Products</h2>
        <ul id="products" />
    </div>
    <div>
        <h2>Search by ID</h2>
        <input type="text" id="prodId" size="5" />
        <input type="button" value="Search" onclick="find();" />
        <p id="product" />
    </div>

    <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
    <script>
    var uri = 'api/Products';

    $(document).ready(function () {
      // Send an AJAX request
      $.getJSON(uri)
          .done(function (data) {
            // On success, 'data' contains a list of products.
            $.each(data, function (key, item) {
              // Add a list item for the product.
              $('<li>', { text: formatItem(item) }).appendTo($('#products'));
            });
          });
    });

    function formatItem(item) {
      return item.Name + ': $' + item.Price;
    }

    function find() {
      var id = $('#prodId').val();
      $.getJSON(uri + '/' + id)
          .done(function (data) {
            $('#product').text(formatItem(data));
          })
          .fail(function (jqXHR, textStatus, err) {
            $('#product').text('Error: ' + err);
          });
    }
    </script>
</body>
</html>

四.發(fā)布web api 并部署

4.1、首先,右鍵項(xiàng)目,選擇發(fā)布:

c# webapi,c# Web API實(shí)例

c# webapi,c# Web API實(shí)例

c# webapi,c# Web API實(shí)例

c# webapi,c# Web API實(shí)例

c# webapi,c# Web API實(shí)例

到這里,程序已經(jīng)發(fā)布到指定的路徑下了(這里的路徑,可以是本機(jī)的文件夾,也可以是服務(wù)器上的ftp路徑)

4.2、我們還剩最后一步,就是,在IIS上,把發(fā)布的服務(wù)端程序掛上去,不說了,直接上圖:
打開iis,選中網(wǎng)站,右鍵 添加網(wǎng)站,?

c# webapi,c# Web API實(shí)例

c# webapi,c# Web API實(shí)例

?好了,服務(wù)端程序發(fā)布并部署完成。

這個(gè)WebAPI就是剛剛我們部署好的,點(diǎn)擊下圖右側(cè)的瀏覽*91(http),會(huì)打開網(wǎng)頁

c# webapi,c# Web API實(shí)例文章來源地址http://www.zghlxwxcb.cn/news/detail-753865.html

到了這里,關(guān)于[入門一]C# webApi創(chuàng)建、與發(fā)布、部署、api調(diào)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C# iis WebAPI無法調(diào)用CngKey模塊

    報(bào)錯(cuò):找不到指定文件 解決方式:給Web.config文件中增加管理員權(quán)限配置 identity impersonate=\\\"true\\\" userName=\\\"Administrator\\\" password=\\\"password\\\" / 示例: 在此示例中,我們將identity元素添加到system.web元素中,并設(shè)置\\\"impersonate\\\"屬性為\\\"true\\\",表示應(yīng)用程序?qū)⑹褂弥付ǖ挠脩裘兔艽a模擬管理員

    2024年02月12日
    瀏覽(16)
  • C# WebService&WebApi接口項(xiàng)目創(chuàng)建

    C# WebService&WebApi接口項(xiàng)目創(chuàng)建

    注意勾選紅框項(xiàng),默認(rèn)是不勾選的,否則創(chuàng)建新項(xiàng)目時(shí)會(huì)找不到ASP.NET Web應(yīng)用程序(.NET Framework)的模板。 0.demo源碼獲?。篽ttps://gitee.com/xiuhuang/webservice_demo 1.創(chuàng)建新項(xiàng)目,選擇ASP.NET Web應(yīng)用程序(.NET Framework)。 2.點(diǎn)擊下一步,到這個(gè)頁面時(shí)選擇空。 3.選中項(xiàng)目右鍵,添加-新建項(xiàng),

    2024年02月05日
    瀏覽(29)
  • 【C#】WebAPI,在Windows IIS平臺(tái)部署

    【C#】WebAPI,在Windows IIS平臺(tái)部署

    目錄 前言 一、技術(shù)介紹 1.1?IIS概念 1.2 WebApi概念 二、部署準(zhǔn)備 2.1 Visual Studio本地項(xiàng)目配置 2.2 運(yùn)行調(diào)試,以本地 localhost(或127.0.0.1)形式訪問 2.3 運(yùn)行調(diào)試,以本地IP(192.168.6.152)形式訪問 三、詳細(xì)步驟 3.1 打包發(fā)布 3.2 安裝IIS(Internet信息服務(wù)) 3.3 配置IIS(Internet信息服務(wù)

    2024年01月17日
    瀏覽(20)
  • C#調(diào)用webapi HTTPS報(bào)錯(cuò):基礎(chǔ)連接已經(jīng)關(guān)閉: 未能為 SSL/TLS 安全通道建立信任關(guān)系--安全證書問題

    1、首先加入命名空間: using System.Net.Security; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; SSL網(wǎng)站,連接時(shí)需要提供證書,對(duì)于非必須提供客戶端證書的情況,只要返回一個(gè)安全確認(rèn)即可。我的是.NET FrameWork4.0 2、加入以下代碼: 3、接收證書進(jìn)行身份驗(yàn)

    2024年02月13日
    瀏覽(23)
  • C#桌面程序(winform)如何一步步集成內(nèi)置WebApi(owin技術(shù)),解耦I(lǐng)IS,并將Api接收信息推給桌面窗體控件展示

    C#桌面程序(winform)如何一步步集成內(nèi)置WebApi(owin技術(shù)),解耦I(lǐng)IS,并將Api接收信息推給桌面窗體控件展示

    最近工廠有個(gè)需求,服務(wù)器上部署了一個(gè)服務(wù),此服務(wù)要把信息推送給現(xiàn)場(chǎng)多臺(tái)工控機(jī)上的CS上位機(jī)程序。由于涉及到多個(gè)軟件之間的通信,做架構(gòu)時(shí),首先排除掉中間表形式,從效率和穩(wěn)定性上也排除掉了Socket,最后采用了WebApi接口形式來做通信。但是有個(gè)問題,上位機(jī)程

    2023年04月08日
    瀏覽(22)
  • C# webAPI 精解

    C# webAPI 精解

    先創(chuàng)建一個(gè)web項(xiàng)目 基本可以運(yùn)行的程度 用postman進(jìn)行接口測(cè)試 .NET Framework 和 .NET Core 都可以創(chuàng)建 webAPI 這里用 .NET Framework 比較簡單 。 啟動(dòng) Visual Studio,并從“開始”頁中選擇“新建項(xiàng)目”。 或者,在 “文件” 菜單中,選擇“ 新建 ”,然后選擇“ 項(xiàng)目”。 在 “模板 ”窗格

    2024年02月09日
    瀏覽(19)
  • C# webapi 參數(shù)(AI)

    在C# WebAPI中,參數(shù)是用于接收和處理HTTP請(qǐng)求中傳遞的數(shù)據(jù)的方式。WebAPI支持不同類型的參數(shù),包括路由參數(shù)、查詢字符串參數(shù)、請(qǐng)求體參數(shù)和標(biāo)頭參數(shù)。以下是一些常用的WebAPI參數(shù)類型: 路由參數(shù)(Route Parameters): 路由參數(shù)從URL的路徑中提取值。在WebAPI中,通常使用路由模

    2024年02月15日
    瀏覽(25)
  • C# WebApi傳參及Postman調(diào)試

    C# WebApi傳參及Postman調(diào)試

    歡迎來到本文,本篇文章將會(huì)探討C# WebApi中傳遞參數(shù)的方法。在WebApi中,參數(shù)傳遞是一個(gè)非常重要的概念,因?yàn)樗沟梦覀兡軌驈目蛻舳双@取數(shù)據(jù),并將數(shù)據(jù)傳遞到服務(wù)器端進(jìn)行處理。WebApi是一種使用HTTP協(xié)議進(jìn)行通信的RESTful服務(wù),它可以通過各種方式傳遞參數(shù)。在本文中,

    2024年04月15日
    瀏覽(23)
  • c# WebApi的搭建和調(diào)試(超級(jí)簡單)

    c# WebApi的搭建和調(diào)試(超級(jí)簡單)

    1.首先新建一個(gè)ASP.NET應(yīng)用程序。 2.在新建ASP.NET項(xiàng)目界面,按照如下步驟進(jìn)行。 點(diǎn)擊確定后,后續(xù)那個(gè)讓你使用Azure的界面直接取消即可。 3.新建后的界面如下 ? 鼠標(biāo)右擊Controllers 文件夾,在添加項(xiàng)后面選擇控制器。 選擇如下控制器,點(diǎn)擊添加按鈕。 根據(jù)需求修改名稱( 后

    2023年04月22日
    瀏覽(12)
  • .NET WebApi 發(fā)布到服務(wù)器(windows)并開放端口

    .NET WebApi 發(fā)布到服務(wù)器(windows)并開放端口

    目錄 1.前言 2.發(fā)布前的準(zhǔn)備 3.打包發(fā)布(交叉編譯) 3.1更改生成xml文件的設(shè)置 3.2進(jìn)入WebApi項(xiàng)目,右鍵發(fā)布 3.3發(fā)布設(shè)置------勾選在發(fā)布前刪除現(xiàn)有文件 4.發(fā)送件至服務(wù)器 5.服務(wù)器安裝對(duì)應(yīng)環(huán)境 5.1安裝IIS 5.2安裝Hosting Bundle 6.發(fā)布 7.配置端口 8.各類報(bào)錯(cuò) 8.1? ? 500.19 Internal Server

    2024年04月12日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包