⑴ 怎樣用webapi連接到資料庫的數據
先打開vs2010軟體,找到項目文件,雙擊web.config
vs2010中web.config配置資料庫連接
第一種:取連接字元串
string
connstring
=
system.web.configuration.webconfigurationmanager.connectionstrings["sqlconnstr"].connectionstring;
或者
protected
static
string
connectionstring
=
configurationmanager.connectionstrings["sqlconnstr"].connectionstring;
web.config文件:加在</configsections>後面
<connectionstrings>
<remove
name="localsqlserver"
/>
<add
name="sqlconnstr"
connectionstring="user
id=xx;password=xx;initial
catalog=database_name;data
source=.\sqlxxxx"
/>
</connectionstrings>
vs2010中web.config配置資料庫連接
第二種:取連接字元串:
string
myvar=configurationsettings.appsettings["connstring"];
web.config文件:加在<appsettings>和</appsettings>
之間
<appsettings>
<add
key="connstring"
value="uid=xx;pwd=xx;database=batabase_name;server=(local)"
/>
</appsettings>
據說兩者通用,但是第二種是asp.net2.0的新特性,建議使用第二種。其實我一直有個疑問,兩個字元串中的uid;pwd;和user
id;
password;是否等價。根據網上我查到的資料是可以互換通用的。
vs2010中web.config配置資料庫連接
連接sql
server資料庫的機制與連接access的機制沒有什麼太大的區別,只是改變了connection對象和連接字元串中的不同參數.
首先,連接sql
server使用的命名空間不是"system.data.oledb",而是"system.data.sqlclient".
其次就是他的連接字元串了,我們一個一個參數來介紹(注意:參數間用分號分隔):
"user
id=sa":連接資料庫的驗證用戶名為sa.他還有一個別名"uid",所以這句我們還可以寫成"uid=sa".
"password=":連接資料庫的驗證密碼為空.他的別名為"pwd",所以我們可以寫為"pwd=".
這里注意,你的sql
server必須已經設置了需要用戶名和密碼來登錄,否則不能用這樣的方式來登錄.如果你的sql
server設置為windows登錄,那麼在這里就不需要使用"user
id"和"password"這樣的方式來登錄,而需要使用"trusted_connection=sspi"來進行登錄.
initial
catalog=northwind":使用的數據源為"northwind"這個資料庫.他的別名為"database",本句可以寫成"database=northwind".
"server=yoursqlserver":使用名為"yoursqlserver"的伺服器.他的別名為"data
source","address","addr".如果使用的是本地資料庫且定義了實例名,則可以寫為"server=(local)\實例名";如果是遠程伺服器,則將"(local)"替換為遠程伺服器的名稱或ip地址.
"connect
timeout=30":連接超時時間為30秒.
在這里,建立連接對象用的構造函數為:sqlconnection.
7
最後要保存你所更改的文件,右鍵
保存(ctrl+s).
⑵ webapi的ActionFilterAttribute可以直接返回數據給客戶端嗎
------解決思路----------------------
http://blog.csdn.net/starfd/article/details/43524175
//此處暫時以401返回,可調整為其它返回
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
//actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
艹,csdn這是要關門的節奏,回復的功能都出500錯誤了!
------解決思路----------------------
上面兩種返回HttpResponseMessage的方法(構造)都有幾種重載,可以傳入自定義class,也可以返回StringContent之類的
⑶ 在WebApi中返回一個JSON格式的數據,如何到客戶端就變了
轉載 在使用Web Api的時候,有時候只想返回JSON;實現這一功能有多種方法,本文提供兩種方式,一種傳統的,一種作者認為是正確的方法。
JSON in Web API – the formatter based approach
只支持JSON最普遍的做法是:首先清除其他所有的formatters,然後只保留JsonMediaTypeFormatter。
有了HttpConfiguration的實例,你將會很簡單的清除所有formatters,然後重新添加JsonMediaTypeFormatter。
實現代碼如下:
configuration.Formatters.Clear();
configuration.Formatters.Add(new JsonMediaTypeFormatter());這種方式雖然可以實現功能,但是所有的conent negotiation還是會發生,這就會產生以下額外的開銷了。因為,你已經知道要返回的結果了,也只想返回Json,其他的content negotiation都不需要了。
下面的方法可以很好的解決這個問題。
JSON in Web API – the conneg based approach
最好的方法是使用自定義的只返回Json Result的content negotiation代替Web Api中默認的content negotiation。
Conneg通過實現IContentNegotiator的Negotiator方法實現擴展。Negotiator方法返回ContentNegotiationResult(它包裝了你選擇的headers和formatter)。
下面的方法通過傳遞一個JsonMediaTypeFormatter給自定義的conneg negotiator,讓它一直返回applicaton/json 的content-type以及JsonMediaTypeFormatter。這種方法避免了每次請求都要重新創建一次formatter。
代碼如下:
public class JsonContentNegotiator : IContentNegotiator
{
private readonly JsonMediaTypeFormatter _jsonFormatter;
public JsonContentNegotiator(JsonMediaTypeFormatter formatter)
{
_jsonFormatter = formatter;
}
public ContentNegotiationResult Negotiate(Type type, HttpRequestMessage request, IEnumerable<MediaTypeFormatter> formatters)
{
var result = new ContentNegotiationResult(_jsonFormatter, new MediaTypeHeaderValue("application/json"));
return result;
}
}接下來,你需要在HttpConfiguration實例上注冊你的新的實現機制:
var jsonFormatter = new JsonMediaTypeFormatter();
//optional: set serializer settings here
config.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter));
通過替換默認的DefaultContentNegotiator,我們使用我們自定義的JsonContentNegotiator,它只支持Json,而且可以馬上返回。
如果你想更深入的了解Content Negotiation的知識,你可以查看作者的這篇文章。
總結
通過使用自定義的JsonContentNegotiator替換系統默認的DefaultContentNegotiator,很好的實現Web Api只返回Json的功能,而且沒有額外的開銷。
⑷ 桌面程序怎樣通過webapi獲取json數據
首先要思考下為什麼google要開發api呢,因為google的產品用戶很多,他們的需求也是各種各樣的,打個比方adwords,用戶可以下載google adwords editors這樣的桌面軟體去操作,也可以通過google adwords的界面去操作,但是用戶同時也要操作 推廣助手,有技術的客戶就想 能不能自己開發一款軟體 打通這2個產品google adwords和網路推廣,同時可以操作,所以api介面就給了這樣的可能,這是和同類型產品對接,方便用戶統一操作,
還有一個例子,google analytics自定義運用,每周都需要發報告給客戶,雖然google analytics有自動報告功能,但是如果有報告固定的格式,每周都是人共去google analytics裡面去拉數據 然後填進去的話, 完全可以用web或者客戶端的方式自動去取數據,然後填充到模板裡面(模板可以通過web方式整合成html代碼 再通過api把html代碼中的數字替換)再加個發信函數,這樣每個星期都可以有一份圖文並茂 並且隨時調整模板的報告郵件了,同時你甚至可以同時集合ga和adwords Bai的數據這樣就省掉大量人工發信的時間。這里api的作用是整合其他信息,一起製作需要的產品,節約時間
未來的社會是開發的社會,只有把產品的介面開放出來,用戶安裝自己的想法加以利用就可以讓產品使用的人更加方便
Google analytics的數據是支持通過api按需導出 甚至你可以製作成email或者整合在你的網站後台中,這些都只是需要api,再開始之前先介紹下
什麼是api呢 你可以理解就是通用的函數 可以調用google的服務的數據 例如google analytics數據,
什麼是token,token就是一串帳號密碼,不過這個是隨機變動的,因為在互聯網中傳輸信息,所以最好有一套隨機變動的密碼來保證信息的安全,
什麼是Python,python是一個很簡單的程序語言,安裝下就可以用就和vb一樣 但是他很強壯 據說只要電腦能做的事 他就能做 無所不能 和硬體交互也沒問題的
什麼是Json 文件 是一種類似txt文件的一種文本文件,這里用來保存機密的信息例如你的帳號密碼
什麼是Google api library庫,電腦安裝了python只能說是安裝了一個基本的語言環境,你要實現某些功能還需要程序,google把這些可以操作自己服務的基礎數據的文件打包成庫文件 記住這里的庫並不是所以的google的服務的程序都在裡面,只是定義了一個基本的介面和傳輸方法,你要運行google analytics 還是需要定義一些函數來操作的 然後再引用google api的 庫文件
什麼是客戶端 google的 api分多種 你既可以通過web 的應用來獲取數據(要綁定運行的網站的域名,主要也是為安全) 也可以通過本地的程序,這里為了演示方法 我用的本地程序,所以我這里的客戶端是桌面程序應用
⑸ 請教webapi,webservice和純http通訊的選擇優劣
先說下我的理解
1.用純http協議作通訊
客戶端通過http的get或者post,發送請求,參數通過queryString或者表單形式發過去。服務端處理完後,發送雙方約定的字元串給客戶端。
ashx和mvc方法都可以輕松實現。
2.asmx類型的webservice
我認為也只是客戶端發送一個http請求過去,然後服務端返回一個響應報文回來。只是限定了發送和響應的文本內容必須是符合soap協議的xml字元串。其他我認為跟普通http請求/響應基本一樣。
3.webapi
尚不知道吶,只知道是用json傳遞數據。但是也是基於http的get和post吧。
⑹ 如何使用web api測試工具siege和ab的post方法來發送json數據 / 藍訊
webapi 支持post get 只需要方法名稱是post 和get 就可以了 function nTabs(thisObj,Num){ if(thisObj.className == "active")return; var tabObj = thisObj.parentNode.id; var tabList = document.getElementById(tabObj).getElementsByTagName("li"); for(i=0; i <tabList.length; i++) {
⑺ 如何向其他的http介面發送JSON數據應該怎麼做那通過什麼技術可以實現
你說的其實就是webapi唄,對方既然接受JSON數據那肯定是公開介面定義的,你自己組織JSON數據通過ajax發給它就可以了,還需要什麼「技術」?前端天天乾的不就是這個事兒么……
⑻ 如何從web視圖訪問webapi的數據
Cors是個比較熱的技術,這在蔣金楠的博客里也有體現,Cors簡單來說就是「跨域資源訪問」的意思,這種訪問我們指的是Ajax實現的非同步訪問,形象點說就是,一個A網站公開一些介面方法,對於B網站和C網站可以通過發Xmlhttprequest請求來調用A網站的方法,對於xmlhttprequest封裝比較好的插件如jquery的$.ajax,它可以讓開發者很容易的編寫AJAX非同步請求,無論是Get,Post,Put,Delete請求都可以發送。
Cors並不是什麼新的技術,它只是對HTTP請求頭進行了一個加工,還有我們的Cors架構里,對jsonp也有封裝,讓開發者在使用jsonp訪問里,編寫的代碼量更少,更直觀,呵呵。(Jsonp和Json沒什麼關系,它是從一個URI返回一個Script響應塊,所以,JSONP本身是和域名沒關系的,而傳統上的JSON是走xmlhttprequest的,它在默認情況下,是不能跨域訪問的)