說到提供數據服務給我們的一些應用,估計用的最多的也就是json和xml這兩種數據格式
實現的方法也是多種多樣,web api,mvc的jsonresult和contentresult...等等
本文是結合Nancy、TInyFox、Owin等來實現的
一、前提工作
新建一個空的web應用程序
添加相應的程序集,配置本地調試的TinyFox等等
二、編寫我們的Startup.cs
1 using Microsoft.Owin; 2 using Owin; 3 [assembly: OwinStartup(typeof(NancyAPIDemo.Startup))] 4 namespace NancyAPIDemo 5 { 6 public class Startup 7 { 8 public void Configuration(IAppBuilder app) 9 { 10 app.UseNancy(); 11 } 12 } 13 }
三、編寫我們的Module
隨便起個名字就好,具體如下
1 using Nancy; 2 namespace NancyAPIDemo 3 { 4 public class HomeModule : NancyModule 5 { 6 private static User user = new User { UName = "catcher", UGender = "m" }; 7 public HomeModule() 8 { 9 Get["/getdata"] = _ => 10 { 11 return Response.AsJson(user); 12 }; 13 } 14 } 15 public class User 16 { 17 public string UName { get; set; } 18 public string UGender { get; set; } 19 } 20 }
這里是演示,所以直接寫死一條數據,User類也是直接放在。。
這里是返回json數據的,如果要返回xml可以用Response.AsXml
四、搬東西(Adapter和SiteRootPath)
TinyFox里面的Demo有,就不貼上來了
下面是項目截圖
五、本地測試
在放到centos之前,還是要試試正常與否!
我配置的端口是12345
測試通過
六、部署到centos中
把剛才的項目發布,將發布的文件傳到centos中
然后就是發揮TinyFox的作用了
./fox.sh -root /var/www/NancyAPIDemo -p 1234
好了,數據服務OK了。
下面就建個程序來訪問試試
七、建立訪問程序
用的是MVC4(VS2013建的)
主要貼頁面的代碼
1 @{ 2 ViewBag.Title = "Index"; 3 Layout = null; 4 } 5 <h1>這是訪問數據服務的測試</h1> 6 <div class="col-md-12"> 7 <label>name:</label> 8 <span id="uName"></span><br /> 9 <label>gender:</label> 10 <span id="uGender"></span> 11 </div> 12 <script src="~/Scripts/jquery-1.8.2.min.js"></script> 13 <script type="text/javascript"> 14 $(function () { 15 $.ajax({ 16 url: 'http://192.168.1.2:1234/getdata', 17 dataType: 'jsonp', 18 success: function (json) { 19 $("#uName").text(json.uName); 20 $("#uGender").text(json.uGender); 21 } 22 }); 23 }) 24 </script>
八、運行我們發布過后的訪問程序
是不是也很簡單很輕松呢!!
注:最開始我用的是vs2015 update2建的mvc項目,不過發布后一直是同一個錯誤提示
暫時還沒有找到解決方法,之前沒用update2貌似是正常的。
所以就換了2013建了個項目,在2015,不選高版本的.net framework也是正常的!