.NET RESTful Web Services入門

来源:http://www.cnblogs.com/isaboy/archive/2016/07/01/C_RESTful_web_services_net.html
-Advertisement-
Play Games

很早之前看到過RESTful Web Services,並未在意,也沒找相關資料進行學習。今天偶爾有一機會,就找了點資料進行研究,發現RESTful真是“簡約而不簡單”。下麵用示例來說明: 1 項目結構 2 REST 服務介面定義 3 REST服務介面實現 4 將服務HOST 5 打開瀏覽器,即可進 ...


  很早之前看到過RESTful Web Services,並未在意,也沒找相關資料進行學習。今天偶爾有一機會,就找了點資料進行研究,發現RESTful真是“簡約而不簡單”。下麵用示例來說明:

1 項目結構

2 REST 服務介面定義

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.ServiceModel;
 6 using System.ServiceModel.Web;
 7 namespace Jack_Restful_Service
 8 {
 9 
10     [ServiceContract(Name = "RestfulService",Namespace="http://www.cnblogs.com/isaboy")]
11     public interface IRestDemoServices
12     {
13         [OperationContract]
14         [WebGet(UriTemplate = Routing.GetClientRoute, BodyStyle = WebMessageBodyStyle.Bare)]
15         string GetClientNameById(string Id);
16 
17         [OperationContract]
18         [WebGet(UriTemplate = Routing.AddClientRoute, BodyStyle = WebMessageBodyStyle.Bare)]
19         string Add(string a, string b);
20         //error
21         //string Add(int a, int b);
22 
23         [OperationContract]
24         [WebGet(UriTemplate = Routing.LoginClientRoute, BodyStyle = WebMessageBodyStyle.Bare)]
25         string Login(string uname, string upwd);
26 
27         //post 
28         [OperationContract]
29         [WebInvoke(RequestFormat = WebMessageFormat.Json,
30         ResponseFormat = WebMessageFormat.Json,
31         BodyStyle = WebMessageBodyStyle.Bare,
32         Method = "POST", UriTemplate = "/Client/UpdateUser/{uname}")]
33         User UpdateUser(string uname, User newUser);
34 
35     }
36     //URI路由
37     public static class Routing
38     {
39         public const string GetClientRoute = "/Client/{id}";
40 
41         public const string AddClientRoute = "/Client/{a},{b}";
42         //{uname}裡面的參數名稱要和string Login(string uname, string upwd);一致
43         public const string LoginClientRoute = "/Client/{uname}__{upwd}";
44     }
45 
46 
47 }

 

3 REST服務介面實現

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.ServiceModel;
 6 using System.ServiceModel.Activation;
 7 namespace Jack_Restful_Service
 8 {
 9 
10     [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
11         ConcurrencyMode = ConcurrencyMode.Single,
12         IncludeExceptionDetailInFaults = true,
13         Namespace = "http://www.cnblogs.com/isaboy")]
14     [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
15     public class RestDemoServices : IRestDemoServices
16     {
17         //GET
18         public string GetClientNameById(string Id)
19         {
20             string ReturnString = "Your id is: " + Id;
21 
22             return ReturnString;
23         }
24 
25         public string Add(string a, string b)
26         {
27             int sum = int.Parse(a) + int.Parse(b);
28             return sum.ToString();
29         }
30 
31         public string Login(string uname, string upwd)
32         {
33             if (uname == "admin" && upwd == "admin")
34             {
35                 return "success";
36             }
37             else
38             {
39                 return "false";
40             }
41         }
42         //POST
43         public User UpdateUser(string uname, User newUser)
44         {
45             return newUser;
46         }
47     }
48 
49 }

 

4 將服務HOST

1  Console.WriteLine("----------Restful Service Start--------------");
2  RestDemoServices demoServices = new RestDemoServices();
3  WebServiceHost _serviceHost = new WebServiceHost(demoServices, new Uri("http://localhost:8000/RestfulService"));
4   _serviceHost.Open();
5   Console.WriteLine("----------Restful Service Opened--------------");
6   Console.WriteLine("http://localhost:8000/RestfulService/Client/8");
7   Console.WriteLine("http://localhost:8000/RestfulService/Client/2,5");
8   Console.WriteLine("http://localhost:8000/RestfulService/Client/admin__admin");

5 打開瀏覽器,即可進行資源訪問

另外,我們可以用代碼進行測試

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Web;
 6 using System.Net;
 7 using System.IO;
 8 namespace PostServiceTest
 9 {
10     class Program
11     {
12         static void Main(string[] args)
13         {
14             //get
15             HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:8000/RestfulService/Client/8");
16             WebResponse response = request.GetResponse();
17             string result = new StreamReader(response.GetResponseStream()).ReadToEnd();
18             Console.WriteLine(result);
19 
20             //post
21             string requestData = "{\"uname\":\"admin\",\"upwd\":\"admin\"}";
22             byte[] data = Encoding.UTF8.GetBytes(requestData);
23             request = (HttpWebRequest)WebRequest.Create("http://localhost:8000/RestfulService/Client/UpdateUser/admin");
24             request.Method = "POST";
25             request.ContentType = "application/json";
26             Stream dataStream = request.GetRequestStream();
27             dataStream.Write(data, 0, data.Length);
28             dataStream.Close();
29 
30             response = request.GetResponse();
31             result = new StreamReader(response.GetResponseStream()).ReadToEnd();
32             Console.WriteLine(result);
33             Console.ReadKey();
34         }
35     }
36 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 有時候你需要重啟Linux 上的 Oracle 資料庫。 註意先啟動資料庫,然後在啟動資料庫監聽。 a.切換為 oracle 用戶身份,也可以使用 su - 將 home 和 path 都切換到 oralce 用戶。 b.啟動 Sqlplus(使用 sql 語句) 但不進行登錄動作 c.使用資料庫管 ...
  • 命令行輸入: vi /etc/sysconfig/iptables 將 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT (允許80埠) 添加到22埠配置的下麵 最後如圖: 重啟防火牆: /etc/init.d/ip ...
  • 1.下載安裝VMware,我安裝的是VMware 12.VMware從11開始不再支持32位系統,32位系統請安裝10. VMware官方功能特性介紹http://www.vmware.com/cn/products/workstation VMware下載安裝。地址:http://www.epin ...
  • 1、使用yum安裝 yum -y install httpd mysql mysql-server php php-mysql postgresql postgresql-server php-postgresql php-pgsql php-devel 2、配置httpd 2.1、啟動httpd服 ...
  • 互斥量和臨界區非常相似,只有擁有了互斥對象的線程才可以訪問共用資源,而互斥對象只有一個,因此可以保證同一時刻有且僅有一個線程可以訪問共用資源,達到線程同步的目的。 互斥量相對於臨界區更為高級,可以對互斥量進行命名,支持跨進程的線程同步。互斥量是調用的Win32的API對互斥鎖的操作,因此在同一操作系 ...
  • ...
  • 來源:威客百科 本文地址:baike.renwuyi.com/2015-04/9181.html 轉載請註明出處。 ...
  • 1、進入支付寶首頁 GET https://auth.alipay.com/login/index.htm HTTP/1.1Accept: */*Accept-Language: zh-CNAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 ( ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...