『壹』 Python實現WebService介面(SOAP)
Web Service是一個[平台](https://ke..com/item/平台/1064049)獨立的,低耦合的,自包含的、基於可[編程](https://ke..com/item/編程)的web的應用程序,可使用開放的[XML](https://ke..com/item/XML)([標准通用標記語言](https://ke..com/item/標准通用標記語言/6805073)下的一個子集)[標准](https://ke..com/item/標准/219665)來[描述](https://ke..com/item/描述/8928757)、發布、發現、協調和配置這些應用程序,用於開發分布式的交互操作的[應用程序](https://ke..com/item/應用程序/5985445)。 [1]
Web Service技術, 能使得運行在不同機器上的不同應用無須藉助附加的、專門的第三方軟體或硬體, 就可相互交換數據或集成。依據Web Service規范實施的應用之間, 無論它們所使用的語言、 平台或內部協議是什麼, 都可以相互交換數據。Web Service是自描述、 自包含的可用網路模塊, 可以執行具體的業務功能。Web Service也很容易部署, 因為它們基於一些常規的產業標准以及已有的一些技術,諸如[標准通用標記語言](https://ke..com/item/標准通用標記語言/6805073)下的子集[XML](https://ke..com/item/XML)、HTTP。Web Service減少了應用介面的花費。Web Service為整個企業甚至多個組織之間的業務流程的集成提供了一雀激緩個通用機制。
**SOAP**
SOAP即[簡單對象訪問協議](https://ke..com/item/簡單對象訪問協議)(Simple Object Access Protocol),它是用於交換鉛梁[XML](https://ke..com/item/XML)([標准通用標記語言](https://ke..com/item/標准通用標記語言)下的一個子集)編碼信息的輕量級協議。它有三個主要方面:XML-envelope為描述信息內容和如何處理內容定義了框架,將程序對象編碼成為XML對象的規則,執行[遠程過程調用頃模](https://ke..com/item/遠程過程調用)(RPC)的約定。SOAP可以運行在任何其他[傳輸協議](https://ke..com/item/傳輸協議)上。例如,你可以使用 SMTP,即網際網路[電子郵件協議](https://ke..com/item/電子郵件協議)來傳遞SOAP消息,這可是很有誘惑力的。在[傳輸層](https://ke..com/item/傳輸層)之間的頭是不同的,但XML有效負載保持相同。
Web Service 希望實現不同的系統之間能夠用「[軟體](https://ke..com/item/軟體)-軟體對話」的方式相互調用,打破了軟體應用、網站和各種設備之間的格格不入的狀態,實現「基於Web無縫集成」的目標。
使用Python實現服務端
service.py 服務端啟動文件
app.py webservice介面
使用Python實現客戶端
client.py
上面調用的客戶端介面,測試結果如下:
『貳』 App 和 Web 的通用介面該怎麼設計
1、在介面定義中確定MVC的GET或者POST方式
由於我們整個Web API平台是基於MVC的基礎上進行的API開發,因此整個Web API的介面,在定義的時候,一般需要顯示來聲明介面是[HttpGet]或者[HttpPost],雖然有些介面也可以不用聲明,但是避免出現類似下面的錯誤信息,顯式聲明還是有好處的。
請求的資源不支持 http 方法「POST
例如在基類定義的查找對象介面如下所示。
/// <summary>
/// 查詢資料庫,檢查是否存在指定ID的對象
/// </summary>
/// <param name="id">對象的ID值</param>
/// <returns>存在則返回指定的對象,否則返回Null</returns>
[HttpGet]
public virtual T FindByID(string id, string token)
如果是增刪改的介面,一般需要聲明為POST方式提交數據,而且基於安全性的考慮,需要攜帶更多的參數。
/// <summary>
/// 插入指定對象到資料庫中
/// </summary>
/// <param name="info">指定的對象</param>
/// <returns>執行操作是否成功。</returns>
[HttpPost]
public virtual CommonResult Insert(T info, string token, string signature, string timestamp, string nonce, string appid)
2、動態對象的介面定義
在一般的Web API介面裡面,我們可能都會碰到很多簡單類型的參數,但是又想讓它們以POST方式提交數據,那麼我們就可以有兩種方法來處理,一種是定義一個類來放置這些參數,一種是採用動態的JObject參數,前者有很多不方便的地方,因為我們不可能為每個介面參數定義多一個實體類,這樣可能會有很多難以管理的類定義。如下面是微信API的調用介面案例,我們也需要設置這樣的處理規則。
介面調用請求說明
http請求方式: POST(請使用https協議)
https://api.weixin.qq.com/cgi-bin/groups/update?access_token=ACCESS_TOKEN
POST數據格式:json
POST數據例子:{"group":{"id":108,"name":"test2_modify2"}}
那麼我們採用JObject是這么樣的呢,我們來看介面的定義和處理代碼。JObject是Newtonsoft.Json.Linq命名空間下的一個對象。
/// <summary>
/// 修改用戶密碼
/// </summary>
/// <param name="param">包含userName和userPassword的復合對象</param>
/// <param name="token">用戶訪問令牌</param>
/// <returns></returns>
[HttpPost]
public CommonResult ModifyPassword(JObject param, string token)
{
//令牌檢查,不通過則拋出異常
CheckResult checkResult = CheckToken(token);
dynamic obj = param;
if (obj != null)
{
string userName = obj.userName;
string userPassword = obj.userPassword;
bool success = BLLFactory<User>.Instance.ModifyPassword(userName, userPassword);
return new CommonResult(success);
}
else
{
throw new MyApiException("傳遞參數出現錯誤");
}
}
其中我們把JObject對象轉換為我們所需要的對象的時候,因為我們沒有定義具體的實體類,因此採用了dynamic語法,聲明這是一個動態對象,由運行時獲取對應的屬性。
dynamic obj = param;
這樣我們就可以在調用的時候,動態POST對應的JSON對象給Web API介面,而不需要預先定義各種介面參數的類了。
/// <summary>
/// 調用Web API介面,修改用戶密碼
/// </summary>
/// <param name="userName">用戶名稱</param>
/// <param name="userPassword">修改的密碼</param>
/// <returns>如果修改成功返回true,否則返回false</returns>
public bool ModifyPassword(string userName, string userPassword)
{
var action = "ModifyPassword";
var postData = new
{
userName = userName,
userPassword = userPassword
}.ToJson();
string url = GetTokenUrl(action);
CommonResult result = JsonHelper<CommonResult>.ConvertJson(url, postData);
return (result != null) ? result.Success : false;
}
其中GetTokenUrl是根據token和API的地址等參數,構建一個完整的提交地址。我們在上面代碼通過
var postData = new
{
userName = userName,
userPassword = userPassword
}.ToJson();
就可以動態創建一個對象,並生成它的JSON字元串,把數據POST提交到對應的API介面裡面即可,然後對結果進行對象的轉換就算完成了。
3、集合和分頁的處理
在很多介面裡面,我們都需要用到分頁的處理,Web API也不例外,這樣可以提交數據檢索效率,減少伺服器數據處理的壓力,同時也提交客戶端的數據顯示速度。
一般的集合介面定義如下所示(通用性基類介面)。
/// <summary>
/// 返回資料庫所有的對象集合
/// </summary>
/// <returns>指定對象的集合</returns>
[HttpGet]
public virtual List<T> GetAll(string token)
{
//檢查用戶是否有許可權,否則拋出MyDenyAccessException異常
base.CheckAuthorized(AuthorizeKey.ListKey, token);
List<T> list = baseBLL.GetAll();
return list;
}
但是這樣的返回記錄會比較多,一般情況下需要分頁,那麼分頁的處理介面定義如下所示。
/// <summary>
/// 根據條件查詢資料庫,並返回對象集合(用於分頁數據顯示)
/// </summary>
/// <returns>指定對象的集合</returns>
[HttpPost]
public virtual PagedList<T> FindWithPager(string condition, PagerInfo pagerInfo, string token)
分頁介面,在這里返回的結果裡面,用了一個PageList的泛型類,這個方便我們獲取當前的記錄及總數,它的定義如下所示。
/// <summary>
/// 分頁集合
/// </summary>
/// <typeparam name="T">對象</typeparam>
public class PagedList<T>
{
/// <summary>
/// 返回記錄的總數
/// </summary>
public int total_count { get; set; }
/// <summary>
/// 列表集合
/// </summary>
public List<T> list { get; set; }
}
最後整個分頁的處理Web API介面實現如下所示。
/// <summary>
/// 根據條件查詢資料庫,並返回對象集合(用於分頁數據顯示)
/// </summary>
/// <returns>指定對象的集合</returns>
[HttpPost]
public virtual PagedList<T> FindWithPager(string condition, PagerInfo pagerInfo, string token)
{
//檢查用戶是否有許可權,否則拋出MyDenyAccessException異常
base.CheckAuthorized(AuthorizeKey.ListKey, token);
List<T> list = baseBLL.FindWithPager(condition, pagerInfo);
//構造成Json的格式傳遞
var result = new PagedList<T>() { total_count = pagerInfo.RecordCount, list = list };
return result;
}
最後客戶端調用分頁的Web API代碼如下所示。
/// <summary>
/// 根據條件查詢資料庫,並返回對象集合(用於分頁數據顯示)
/// </summary>
/// <param name="condition">查詢的條件</param>
/// <param name="pagerInfo">分頁實體</param>
/// <returns>指定對象的集合</returns>
public virtual List<T> FindWithPager(string condition, ref PagerInfo pagerInfo)
{
var action = "FindWithPager";
string url = GetTokenUrl(action) + string.Format("&condition={0}", condition);
var postData = pagerInfo.ToJson();
List<T> result = new List<T>();
PagedList<T> list = JsonHelper<PagedList<T>>.ConvertJson(url, postData);
if (list != null)
{
pagerInfo.RecordCount = list.total_count;//修改總記錄數
result = list.list;
}
return result;
}
4、混合框架界面整合Web API介面
在整個Web API的平台構建以及在混合框架的整合過程中,我把各個模塊還是遵循相對獨立的方式進行開發和整合,它們實現了從直接訪問資料庫、以WCF服務獲取數據,以及通過WebAPI調用方式獲取數據幾種方式的統一,從而實現了整個混合框架的高度整合。
整個混合框架的核心是以相對獨立的方式,整合各個可重用的模塊,我們可以遵循一定的基礎上,快速構建統一的應用平台。
搭建完畢的整個WebAPI平台,其中包括了服務端內容,以API控制器的方式,發布了對應的Web API介面。
在每個混合框架的獨立模塊裡面,我們封裝了對應的Web API客戶端調用處理,從而實現了Web API的調用方式。
在Win10下,使用Web API模式運行混合框架,獲得的主體界面效果如下所示。
獨立模塊許可權管理系統界面如下所示。
系列文章如下所示:
Web API應用架構在Winform混合框架中的應用(1)
Web API應用架構在Winform混合框架中的應用(2)--自定義異常結果的處理
Web API介面設計經驗總結
Web API應用架構在Winform混合框架中的應用(3)--Winfrom界面調用WebAPI的過程分解
Web API應用架構在Winform混合框架中的應用(4)--利用代碼生成工具快速開發整套應用
Web API應用架構在Winform混合框架中的應用(5)--系統級別字典和公司級別字典並存的處理方式
『叄』 手工設置Web訪問介面
放入安裝系統光蝶OK!
『肆』 怎麼為自己的網站編寫api介面
80%的都用webservice 新浪微博API(java版) ============================ 修改事項: 1、介面返回結果採用json對象方式封裝 2、修改WeiboResponse中空字元串("")調用判斷的bug 3、修改了JSONObject中返回空對象的問題 4、增加了直接文件上傳介面直接 常用介面實例: (使用前先修改 Weibo.java 中 public static final String CONSUMER_KEY = ""; public static final String CONSUMER_SECRET = ""; 填寫成實際申請的 CONSUMER_KEY 及 CONSUMER_SECRET) 1、獲取最新公共微博列表 參考:weibo4j.examples.GetTimelines 中的getPublicTimeline()部分 2、發表微博 參考:weibo4j.examples.Update 中的updateStatus(...)部分 3、發表評論 參考:weibo4j.examples.Update 中的updateComment(...)部分 4、刪除評論 參考:weibo4j.examples.Update 中的destroyComment(...)部分 5、發送私人消息 參考:weibo4j.examples.DirectMessage 類 6、發表帶圖片的微博 參考:weibo4j.examples.OAuthUploadByFile 中的uploadStatus(status,file)部分 7、更新用戶頭像 參考:weibo4j.examples.OAuthUpdateProfile類 8、OAuth桌面應用訪問 步驟: 1> 在weibo4j.examples.OAuthUpdate 訪問認證的URL,得到pin 2> 在weibo4j.examples.OAuthUpdate 輸入pin,然後得到AccessToken 3> 即可訪問用戶的微博,參考:weibo4j.examples.OAuthUpdateTwo 9、OAuth WEB應用訪問 步驟: 1> 在weibo4j.examples.WebOAuth 帶backurl參數請求OAuth認證,獲得RequestToken 2> 在callback 的地址裡面,接受到oauth_verifier參數,然後再發一次請求,即可獲得AccessToken 3> 用AccessToken訪問用戶的微博 實例說明: 在web目錄下面有兩個jsp頁面: call.jsp 是發送request的請求,在槐謹隱第九行的參數「http://localhost:8080/callback.jsp」是回調地址 當獲取成功後將RequestToken置入session,並重定向到用戶認證地址 callback.jsp 接收到oauth_verifier參數,從session裡面拿到RequestToken,再請求獲取AccessToken 獲取到後即可對用戶微博進行操作,本例中是發表微晌兄博 測試環境: 本例中可以將call.jsp和 callback.jsp直接放到tomcat的根目錄下面:webapps\ROOT 並將實例項目編譯好的classes文件和lib目錄拷貝到ROOT\WEB-INF下面 重啟tomcat,訪問http://localhost:8080/call.jsp?opt=1 註:也可以鉛廳打成war包,但注意call.jsp裡面的callback參數需要做相應修改 ============================================================================= 其他介面在weibo4j.Weibo類中定義,調用方式請參考weibo4j.examples,下面是完整的介面列表: 獲取下行數據集(timeline)介面 方法名: statuses/public_timeline 最新公共微博 方法名:getPublicTimeline statuses/friends_timeline 最新關注人微博 (別名: statuses/home_timeline) 方法名:getFriendsTimeline statuses/user_timeline 用戶發表微博列表 方法名:getUserTimeline(String id, Paging paging) statuses/mentions 最新 @用戶的 方法名: getMentions() statuses/comments 單條評論列表(按微博) 方法名:getComments() 微博訪問介面 statuses/show 獲取單條 方法名:showStatus(long id) statuses/update 發表微博 方法名:updateStatus(String status) statuses/upload 發表微博及圖片 方法名:uploadStatus(String status,File file) statuses/destroy 刪除 方法名: destroyStatus(long statusId) statuses/comment 評論 方法名: destroyComment(long commentId) statuses/comment_destroy 刪除評論 方法名:destroyComment 私信介面 direct_messages 我的私信列表 方法名:getDirectMessages() 分頁 getDirectMessages(Paging paging) direct_messages/sent 我發送的私信列表 方法名:getSentDirectMessages() direct_messages/new 發送私信 方法名:sendDirectMessage(String id,String text) direct_messages/destroy 刪除一條私信 方法名:destroyDirectMessage(int id) 關注介面 friendships/create 關注某用戶 方法名:createFriendship(String id)或 createFriendship(String id, boolean follow) friendships/destroy 取消關注 方法名: destroyFriendship(String id) friendships/exists 是否關注某用戶 方法名:existsFriendship(String userA, String userB) friends/ids 關注列表 方法名: getFriendsIDs(long cursor) followers/ids 粉絲列表 方法名:getFollowersIDs(long cursor) 賬號介面 account/verify_credentials 驗證身份是否合法 方法名:verifyCredentials() account/rate_limit_status 查看當前頻率限制 方法名:rateLimitStatus() account/update_profile_image 更改頭像 方法名:updateProfileImage(File image) account/update_profile 更改資料 方法名:User updateProfile(String name, String email, String url, String location, String description) 收藏介面 favorites 收藏列表 方法名:getFavorites() favorites/create 添加收藏 方法名:createFavorite(long id) favorites/destroy 刪除收藏 方法名:destroyFavorite(long id)
採納哦
『伍』 網頁設計製作詳細流程
分析如下:
1、首先下載安裝Dreamweaver,打開後,新建一個網頁,一般選擇「HTML」建立網頁。選擇「經典」界面,有助於我們更便捷使用這個軟體。
(5)手工製作web介面擴展閱讀:
網頁設計
設計網站要注意兩個要點:整體風格和色彩搭配。
風格
網站的整體風格及其創意設計是最難以學習的。難就難在沒有一個固定的模式可以參照和模仿。給你一個主題,任何兩人都不可能設計出完全一樣的網站。
風格(Style)是抽象的。是指站點的整體形象給瀏覽者的綜合感受。這個「整體形象」包括站點的CI(標志、色彩、字體、標語)、版面布局、瀏覽方式、交互性、文字、語氣、內容價值、存在意義、站點榮譽等等諸多因素。
色彩搭配
無論是平面設計,還是網頁設計,色彩永遠是最重要的一環。當我們距離顯示屏較遠的時候,我們看到的不是優美的版式或者是美麗的圖片,而是網頁的色彩。
網頁配色小技巧:
1.用一種色彩:這里是指先選定一種色彩,然後調整透明度或者飽和度,這樣的頁面看起來色彩統一,有層次感;
2.用兩種色彩:先選定一種色彩,然後選擇它的對比色;
3.用一個色系:簡單的說就是用一個感覺的色彩,例如淡藍,淡黃,淡綠;或者土黃,土灰,土藍。
在網頁配色中,還要切記一些誤區:
1.不要將所有顏色都用到,盡量控制在三至五種色彩以內;
2.背景和前文的對比盡量要大(絕對不要用花紋繁復的圖案作背景),以便突出主要文字內容。
『陸』 怎麼規范的開發webservice介面
以下是操作步驟:
1、編寫服務代碼
服務代碼提供了兩個函數,分別為sayHello和sayHelloToPerson,在HelloService.java類中
2、發布WebService
要將上邊寫的HelloService類發布為WebService,需要先搭建Web應用。下面是在Tomcat下使用Axis創建WebService服務的例子。
3、在Tomcat下創建Web應用
在該例子中,在Tomcat下創建了一個context path為test_webservice的WEB應用。
(1) 在Tomcat的webapps下創建如下文件系統
test_webservice
WEB-INF
lib
Classes
(2)在WEB-INF文件夾下創建web.xml文件,在web.xml中主要是配置axis。
4、復制axis相關的jar文件
將axis的相關jar文件復制到WEB-INF\lib文件夾下。這些文件包括:
activation.jar
axis.jar
axis-ant.jar
axis-schema.jar
commons-discovery-0.2.jar
commons-logging-1.0.4.jar
jaxrpc.jar
log4j-1.2.8.jar
mailapi.jar
saaj.jar
wsdl4j-1.5.1.jar
xmlsec-1.3.0.jar
5、測試發布的WEB應用
啟動Tomcat服務,打開IE瀏覽器,訪問http:host:port/test_webservice/services,
如果看到如下界面就說明AXIS部署成功了。
6、發布WebService
發布WebService需要使用現有的AdminService來實現,這里我寫了一個批處理文件來發布WebService,以後如果需要發布其他文件,只需要修改相應的參數就可以了。
(1)創建deploy.wsdd文件。
(2)創建發布WebService服務的批處理文件deploywebservice.bat。
其中E:\workspace\Libwebservice是存放axis對應的jar文件的文件夾,現在將所有的jar文件都加入到此文件夾中。
-l後的參數是本地要發布WebService的AdminService對應的訪問地址。
最後deploy.wsdd是對應的配置文件名稱。
(3) 將deploy.wsdd文件和deploywebservice.bat文件復制到同一個文件夾下,執行deploywebservice.bat批處理文件,就可以將deploy.wsdd中描述的Java類發布為WebService。發布完成之後再訪問http://host:port/test_webservice/services
『柒』 如何生成c#webservice介面
我洞伍譽在開發軟體的時候經常要開放介面給第三方調用,WebService無疑是一個很可靠也很普遍的做法,所以WebService的開發和發布也是很重納段要的。
之前我還寫過一篇調用WebService的方法【VS2013如何調用別人橘御發布的WebService程序】,也可以參考。
https://jingyan..com/article/eae07827a820b71fec5485a9.html
『捌』 如何用myeclipse編寫webservice 介面
一、服務端發激敗布WebService介面
1、在Myeclipse中,選擇File->new->孝搏Web Service Project,然後輸入項目名稱,框中內容按如巧鉛祥下所示選擇即可,然後點擊next。