日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

dotnet core 开发无缝兼容Http和Websocket协议的接口服务

發(fā)布時(shí)間:2023/12/4 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dotnet core 开发无缝兼容Http和Websocket协议的接口服务 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在應(yīng)用接口開(kāi)發(fā)中往往要針對(duì)不同協(xié)義開(kāi)發(fā)相應(yīng)的代理服務(wù),但對(duì)于Websocket和http這兩種協(xié)議來(lái)說(shuō)就有些不同,從實(shí)現(xiàn)上來(lái)看Websocket可以說(shuō)是Http的升級(jí)子協(xié)議, 兩者在協(xié)議處理上基本一致,具體可以在解釋Body上有所不同。FastHttpApi在實(shí)現(xiàn)過(guò)程完全支持http協(xié)議升級(jí)成websocket協(xié)議,當(dāng)制定一個(gè)基于http請(qǐng)求的接口時(shí),其實(shí)已經(jīng)是完全支持websocket協(xié)議;從而讓使用者只編寫一份代碼即可同時(shí)接受兩種協(xié)議處理。接下來(lái)還是以Northwind的數(shù)據(jù)來(lái)描述FastHttpApi制定相應(yīng)服務(wù)開(kāi)發(fā)。

接口制定

對(duì)于FastHttpApi定義一個(gè)可訪問(wèn)的Http接口是一件非常簡(jiǎn)單的事情,和定義一個(gè)邏輯方法沒(méi)有多大的差異;以下是定義一個(gè)訂單查詢邏輯的http接口,返回Json格式的數(shù)據(jù)。

以上代碼定義了三個(gè)Http請(qǐng)求:

  • /GetEmployeesName?獲取雇員的ID和名稱列表

  • /GetCustomersName?獲取客戶的ID和名稱列表

  • /ListOrders?查詢相應(yīng)雇員和客戶的訂單信息 在瀏覽器上直接訪問(wèn)/GetEmployeesName的數(shù)據(jù)結(jié)果

  • ?

    FastHttpApi對(duì)接口響應(yīng)有默認(rèn)的Json格式返回,Code為HTTP返回的狀態(tài)碼,200為正常,如果不是200那會(huì)帶上Error信息,Data則是具體響應(yīng)的數(shù)據(jù)內(nèi)容,Url則是對(duì)應(yīng)請(qǐng)求的基礎(chǔ)地址。

    頁(yè)面Ajax請(qǐng)求接口

    既然通過(guò)瀏覽器訪問(wèn)沒(méi)有問(wèn)題,那接下來(lái)就可以通過(guò)Ajax進(jìn)行數(shù)據(jù)請(qǐng)求了;以下是通過(guò)ajax調(diào)用/GetEmployeesName和/GetCustomersName兩個(gè)方法。

    請(qǐng)求數(shù)據(jù)后綁定到select控件上,這種是相當(dāng)原始的設(shè)置模式了,相信現(xiàn)有的web前端組件已經(jīng)不需要這么麻煩的工作了:)

    訂單查詢

    對(duì)于FastHttpApi制定方法參數(shù)的在http主要有兩種來(lái)源途徑,一種是通過(guò)Querystring提供,而另一種則通過(guò)Post一個(gè)json內(nèi)容來(lái)提供;對(duì)于組件來(lái)說(shuō)只要沒(méi)有添加[BodyParameter]標(biāo)簽的參數(shù)都由QueryString來(lái)提供(實(shí)際使用中有特別的需要?jiǎng)t可以實(shí)現(xiàn)自己Parameter的屬性標(biāo)簽來(lái)擴(kuò)展)。這樣一個(gè)訂單查詢的功能就開(kāi)發(fā)完成了

    ?

    WebSocket請(qǐng)求

    由于服務(wù)端口和網(wǎng)站的端口是一致,所以構(gòu)建websocket連接的時(shí)候并不要顯式地指定地址,直接拿瀏覽當(dāng)前的Host地址即可。

    websocket = new WebSocket("ws://" + window.location.host);websocket.onopen = function (evt) { onOpen(evt) };websocket.onclose = function (evt) { onClose(evt) };websocket.onmessage = function (evt) { onMessage(evt) };websocket.onerror = function (evt) { onError(evt) };

    連接創(chuàng)建后就可以對(duì)服務(wù)進(jìn)行請(qǐng)求,由于websocket默認(rèn)發(fā)送的Text內(nèi)容,為了能夠方便調(diào)用需要制定一些數(shù)據(jù)格式規(guī)劃,在這里我們首選也是Json.

    請(qǐng)求的數(shù)據(jù)內(nèi)容主要包括url和params,url是描述具體請(qǐng)求的Http地址;params則是描述對(duì)應(yīng)參數(shù)名的參數(shù)。通過(guò)和ajax的查詢代碼來(lái)對(duì)比,兩者沒(méi)有多大的區(qū)別,前者是基于url請(qǐng)求而后者則通過(guò)描述一個(gè)json來(lái)處理。

    API調(diào)用方式查看

    FastHttpApi內(nèi)部集成了一個(gè)API查詢面頁(yè),通過(guò)這個(gè)頁(yè)面可以查詢當(dāng)前服務(wù)下所有可訪問(wèn)的接口,并描述接口在ajax和websocket下的訪問(wèn)調(diào)用方式和相關(guān)數(shù)據(jù)格式。訪問(wèn)路徑/_info/api.html

    總結(jié)

    如果你想開(kāi)發(fā)一個(gè)接口服務(wù)相同時(shí)支持ajax和websocket訪問(wèn)的話,那FastHttpApi會(huì)是不錯(cuò)的選擇,因?yàn)樗芴峁┓奖?#xff0c;高效和安全的應(yīng)用服務(wù)接口編寫基礎(chǔ)服務(wù)功能。 本文例子的項(xiàng)目代碼:/samples/HttpApiServer.HttpAndWebsocketApi

    相關(guān)文章:

    • dotnet core高吞吐Http api服務(wù)組件FastHttpApi

    原文地址:?https://www.cnblogs.com/smark/p/9712639.html


    .NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com

    總結(jié)

    以上是生活随笔為你收集整理的dotnet core 开发无缝兼容Http和Websocket协议的接口服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。