㈠ 有系統完整的api嗎,可以看到api中的源代碼嗎
你的JDK安裝目錄下%Java_home%/src.zip文件就是源碼,解壓縮找到對應包下面的類即可。
如果是Eclipse開發,ctr+滑鼠左擊,出現不了源碼的話,在彈出的視圖中點擊attach source,選擇src.zip即可。
㈡ 怎樣找到自己網站的api介面代碼
什麼是API,即應用程序編程介面,也就是在網站開發時預先定義的函數,就是常說的開源函數,只不過將一些固定的程序封裝在這些函數中,待調用時只需要一個借口引用,方便又簡單。就像調用Jquery函數一樣。
㈢ php中的API介面怎麼寫
api介面是具有的特定功能的程序代碼塊,作用是產生或者處理傳輸數據;
其存在的意義在於,不同語言之間的正常交流,包括iOS,Java,PHP,C等,但是所有的程序語言都支持Json和Xml數據類型,所以介面產生數據基本都是json或者xml文件。
怎麼寫?
其實就是正常的功能類和方法,調用時產生需求功能對應的數據,僅此而已,在沒有什麼復雜的邏輯。
㈣ 是否有API Monitor的開源源代碼
一、Dubbo整體架構
1、Dubbo與Spring的整合
Dubbo在使用上可以做到非常簡單,不管是Provider還是Consumer都可以通過Spring的配置文件進行配置,配置完之後,就可以像使用
spring bean一樣進行服務暴露和調用了,完全看不到bbo
api的存在。這是因為bbo使用了spring提供的可擴展Schema自定義配置支持。在spring配置文件中,可以像、這樣進行配置。
META-INF下的spring.handlers文件中指定了bbo的xml解析類:DubboNamespaceHandler。像前面的被解
析成ServiceConfig,被解析成ReferenceConfig等等。
2、jdk spi擴展
由於Dubbo是開源框架,必須要提供很多的可擴展點。Dubbo是通過擴展jdk
spi機制來實現可擴展的。具體來說,就是在META-INF目錄下,放置文件名為介面全稱,文件中為key、value鍵值對,value為具體實現類
的全類名,key為標志值。由於bbo使用了url匯流排的設計,即很多參數通過URL對象來傳遞,在實際中,具體要用到哪個值,可以通過url中的參
數值來指定。
Dubbo對spi的擴展是通過ExtensionLoader來實現的,查看ExtensionLoader的源碼,可以看到Dubbo對jdk spi做了三個方面的擴展:
(1)jdk spi僅僅通過介面類名獲取所有實現,而ExtensionLoader則通過介面類名和key值獲取一個實現;
(2)Adaptive實現,就是生成一個代理類,這樣就可以根據實際調用時的一些參數動態決定要調用的類了。
(3)自動包裝實現,這種實現的類一般是自動激活的,常用於包裝類,比如Protocol的兩個實現類:ProtocolFilterWrapper、ProtocolListenerWrapper。
3、url匯流排設計
Dubbo為了使得各層解耦,採用了url匯流排的設計。我們通常的設計會把層與層之間的交互參數做成Model,這樣層與層之間溝通成本比較大,擴展起來
也比較麻煩。因此,Dubbo把各層之間的通信都採用url的形式。比如,注冊中心啟動時,參數的url為:
registry://0.0.0.0:9090?codec=registry&transporter=netty
這就表示當前是注冊中心,綁定到所有ip,埠是9090,解析器類型是registry,使用的底層網路通信框架是netty。
二、Dubbo啟動過程
Dubbo分為注冊中心、服務提供者(provider)、服務消費者(consumer)三個部分。
1、注冊中心啟動過程
注冊中心的啟動過程,主要看兩個類:RegistrySynchronizer、RegistryReceiver,兩個類的初始化方法都是start。
RegistrySynchronizer的start方法:
(1)把所有配置信息load到內存;
(2)把當前注冊中心信息保存到資料庫;
(3)啟動5個定時器。
5個定時器的功能是:
(1)AutoRedirectTask,自動重定向定時器。默認1小時運行1次。如果當前注冊中心的連接數高於平均值的1.2倍,則將多出來的連接數重定向到其他注冊中心上,以達到注冊中心集群的連接數均衡。
(2)DirtyCheckTask,臟數據檢查定時器。作用是:分別檢查緩存provider、資料庫provider、緩存consumer、資料庫
consumer的數據,清除臟數據;清理不存活的provider和consumer數據;對於緩存中的存在的provider或consumer而數
據庫不存在,重新注冊和訂閱。
(3)ChangedClearTask,changes變更表的定時清理任務。作用是讀取changes表,清除過期數據。
(4)AlivedCheckTask,注冊中心存活狀態定時檢查,會定時更新registries表的expire欄位,用以判斷注冊中心的存活狀態。如果有新的注冊中心,發送同步消息,將當前所有注冊中心的地址通知到所有客戶端。
(5)ChangedCheckTask,變更檢查定時器。檢查changes表的變更,檢查類型包括:參數覆蓋變更、路由變更、服務消費者變更、權重變更、負載均衡變更。
RegistryReceiver的start方法:啟動注冊中心服務。默認使用netty框架,綁定本機的9090埠。最後啟動服務的過程是在NettyServer來完成的。接收消息時,拋開bbo協議的解碼器,調用類的順序是
NettyHandler-》NettyServer-》MultiMessageHandler-》HeartbeatHandler-》AllDispatcher-》
DecodeHandler-》HeaderExchangeHandler-》RegistryReceiver-》RegistryValidator-》RegistryFailover-》RegistryExecutor。
2、provider啟動過程
provider的啟動過程是從ServiceConfig的export方法開始進行的,具體步驟是:
(1)進行本地jvm的暴露,不開放任何埠,以提供injvm這種形式的調用,這種調用只是本地調用,不涉及進程間通信。
(2)調用RegistryProtocol的export。
(3)調用DubboProtocol的export,默認開啟20880埠,用以提供接收consumer的遠程調用服務。
(4)通過新建RemoteRegistry來建立與注冊中心的連接。
(5)將服務地址注冊到注冊中心。
(6)去注冊中心訂閱自己的服務。
3、consumer啟動過程
consumer的啟動過程是通過ReferenceConfig的get方法進行的,具體步驟是:
(1)通過新建RemoteRegistry來建立與注冊中心的連接。
(2)新建RegistryDirectory並向注冊中心訂閱服務,RegistryDirectory用以維護注冊中心獲取的服務相關信息。
(3)創建代理類,發起consumer遠程調用時,實際調用的是InvokerInvocationHandler。
三、實際調用過程
consumer端發起調用時,實際調用經過的類是:
1、consumer:
InvokerInvocationHandler-》MockClusterInvoker(如果配置了Mock,則直接調用本地Mock類)-》FailoverClusterInvoker(負載均衡,容錯機制,默認在發生錯誤的情況下,進行兩次重試)-》RegistryDirectory$InvokerDelegete-》ConsumerContextFilter-》FutureFilter->DubboInvoker
NettyServer-》MultiMessageHandler-》HeartbeatHandler-》AllDispatcher-》DecodeHandler-》HeaderExchangeHandler-》DubboProtocol.requestHandler-》EchoFilter-》ClassLoaderFilter-》GenericFilter-》ContextFilter-》ExceptionFilter-》TimeoutFilter-》MonitorFilter-》TraceFilter-》實際service。
四、Dubbo使用的設計模式
1、工廠模式
ServiceConfig中有個欄位,代碼是這樣的:
private static final Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
Dubbo里有很多這種代碼。這也是一種工廠模式,只是實現類的獲取採用了jdk
spi的機制。這么實現的優點是可擴展性強,想要擴展實現,只需要在classpath下增加個文件就可以了,代碼零侵入。另外,像上面的
Adaptive實現,可以做到調用時動態決定調用哪個實現,但是由於這種實現採用了動態代理,會造成代碼調試比較麻煩,需要分析出實際調用的實現類。
2、裝飾器模式
Dubbo在啟動和調用階段都大量使用了裝飾器模式。以Provider提供的調用鏈為例,具體的調用鏈代碼是在
ProtocolFilterWrapper的buildInvokerChain完成的,具體是將註解中含有group=provider的
Filter實現,按照order排序,最後的調用順序是
EchoFilter-》ClassLoaderFilter-》GenericFilter-》ContextFilter-》ExceptionFilter-》
TimeoutFilter-》MonitorFilter-》TraceFilter。
更確切地說,這里是裝飾器和責任鏈模式的混合使用。例如,EchoFilter的作用是判斷是否是回聲測試請求,是的話直接返回內容,這是一種責任鏈的體
現。而像ClassLoaderFilter則只是在主功能上添加了功能,更改當前線程的ClassLoader,這是典型的裝飾器模式。
3、觀察者模式
Dubbo的provider啟動時,需要與注冊中心交互,先注冊自己的服務,再訂閱自己的服務,訂閱時,採用了觀察者模式,開啟一個listener。
注冊中心會每5秒定時檢查是否有服務更新,如果有更新,向該服務的提供者發送一個notify消息,provider接受到notify消息後,即運行
NotifyListener的notify方法,執行監聽器方法。
4、動態代理模式
Dubbo擴展jdk
spi的類ExtensionLoader的Adaptive實現是典型的動態代理實現。Dubbo需要靈活地控制實現類,即在調用階段動態地根據參數決
定調用哪個實現類,所以採用先生成代理類的方法,能夠做到靈活的調用。生成代理類的代碼是ExtensionLoader的
方法。代理類的主要邏輯是,獲取URL參數中指定參數的值作為獲取實現類的key。
㈤ PHP 飛信好友免費簡訊API介面開源版
1,支持群發
(如果需要群發多號用英文逗號(,)分隔(159..,159..))
2,支持POST或GET方式提交數據
本站介面:
http://api.heqee.com/fetion/?username=飛信手機號碼&passowrd=飛信手機密碼&to=接收人號碼&message=簡訊內容
或者
http://api.heqee.com/fetion/?u=飛信手機號碼&p=飛信手機密碼&t=接收人號碼&m=簡訊內容
您也可以下載源碼放在自己的網站上
復制代碼
代碼如下:
<?php
/*
所需PHP擴展:curl,
simplexml
*/
include
"libs/fetion.class.php";
#設置飛信帳號密碼
$username="15900000000";
$password="password";
//接收號碼,多號碼用","分隔(159..,159..)
$sendto
="15900000000,13400000000";
//消息內容
$message
=
"I
am
from
heqee.com";
//實例化(必須)
$fetion
=
new
fetion($username,$password);
//發送
返回布爾
$sms
=
$fetion->send($sendto,$message);
if($sms){
echo
"ok";
}
?>
開源代碼下載http://www.jb51.net/codes/28628.html
㈥ 如何開發一個API的介面
下載android的sdk包,裡面有個sample目錄,裡面就是示常式序。都是開源的,如果想學習Android的API介面的使用方法,或者想寫一個Android應用程序,都可以參考這些示例,甚至可以用這些程序作為模型,做功能的強化,而不必擔心授權的問題。
㈦ api和開源有什麼關系
沒有關系,API是一個軟體提供給開發者使用的介面,開源分很多種類,開源通常就是說軟體的代碼是公開的,大家都可以下載看,是否免費使用,如何使用,要根據開源的方式。
㈧ 開源軟體是指源代碼可以共享對嗎
大體上是這么回事,但也不是隨意。
開源軟體直接的意思就是源代碼是公開的,可以隨意下載,閱讀,編譯,使用。
須知軟體的發布都是有協議的,開源軟體的發布協議有許多中,各種協議有不同的條款對軟體進行保護,可以閱讀並不意味著你可以隨意的修改它,並打上私有協議,把它據為己有。
還有一種叫做自由軟體的東西,遵循gpl協議(各種開源協議中的一種),它允許人們取得軟體源代碼,在修改之後,重新打包發布。但要求修改版需得繼續遵循gpl協議。不能打上私有協議。
軟體是用來使用的,使用開源軟體製作的作品當然規作者所有,使用開源軟體提供的api介面的上層軟體也規作者所有,不必遵循gpl協議。
早期的軟體一般都是開源的,並沒有形成一個產業,沒人靠賣軟體賺錢。
然後,開始出現了商業軟體,對源代碼進行重點保護。
unix系統曾經是一個比較優秀的系統,但是卻出現了官司,有人試圖把它據為己有,
長期的官司纏身阻礙了它的發展,才有了linux的興起,它和unix差不多,但是在發展過程中還沒有遇到過什麼官司,發展比較順利。
想要看看linux內核源代碼及其下面各種軟體源代碼的,可以下載一個lfs的livecd,這是一個需要完全從源代碼構建的系統,它的livecd中包括了幾乎所有的代碼包,600多M。