php中的API接口怎么寫 ?
以我目前的能力沒法理解這個問題。但我舉個例子,可能并不是你想要的答案,但沒準可以提醒一下。我們用GOOGLE MAP API (開源)的時候,會引用一個類似接口的方法,方法有很多參數可以設置。比如這是個引用地圖的方法,它的里面寫了很多完整的方法,我這里就不放出來了,但是我舉得例子是參數傳遞在最上面的initialize () (這里我們暫時當作接口)方法上,我們可以傳遞interface_zoom即縮放大小,interface_lati,interface_lngi就是經緯度等等參數,這些參數可以由我們自己處理,無論是從databa還是什么其他方法讀取還是怎么運算,然后call這個initialize方法帶指定參數就可以了,具體里面如何操作的地圖,如何生成的地圖,我們就不管了。接口就是我們看到日常生活中的插座,它規定好了規格,是幾項的插頭,我們就做成幾項的插頭,具體里面什么線路我們不管。方法中規定了什么類型的參數,我們就傳什么類型的參數,具體里面有什么算法我們不管。個人最自白的解釋,與官方有出入。
var map;
var infoWindow;
function initialize(interface_zoom,interface_lati,interface_lngi) {
var mapDiv = document.getElementById('map-canvas');
map = new google.maps.Map(mapDiv, {
center: new google.maps.LatLng(interface_lati, interface_lngi),
zoom: interface_zoom,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
......
......
}
如何設計出一些優雅的API接口
1. 拼寫要準確
接口函數一旦發布就不能改了,要保持兼容性,拼寫錯誤也不能改了,所以要仔細檢查拼寫,否則會被同行嘲笑很多年。
著名悲劇:unix 的 creat
2. 不僅是英文單詞不要拼錯,時態也不要錯。
比如:
返回bool的判斷函數,單數要用 is 復數要用are,這樣你的命名就和文檔中的描述保持了一致性。
表示狀態的變量或者函數要注意時態,比如 onXxxxChanged 表示xxx已經變化了,isConnecting表示正在連接。
正確的時態可以給使用者傳遞更豐富的信息。
3. 函數最好是動賓結構
動賓結構就是 doSomething,這樣的函數命名含義明確
比如: openFile, allocBuffer, tName
如果這個函數的動詞賓語就是這個對象本身,那么可以省略掉賓語
4. 屬性命名最好是定語+名詞
比如 fileName, maxSize, textColor
5. 不要用生僻單詞,這不是秀英語的地方,也不要用漢語拼音
比如:rendezvous,估計大多數人要去查詞典才知道什么意思,這個詞源自法語,是約會的意思。
Symbian OS里有個用它命名的函數,開發Symbian的是英國人,也許人家覺得很平常吧,反正我是查了詞典才知道的。
6. 不要自己發明縮寫
除非是約定俗成已經被廣泛使用的縮寫,否則老老實實用完整拼寫。
壞例子: count->cnt, manager->mngr password->pw button->btn
現代的IDE都有很好的自動完成功能,名字長一點沒關系的,可讀性更重要。
7. 保持方法的對稱性,有些方法一旦出現就應該是成對的,
比如 有open就要有clo,有alloc就要有free,有add就要有remove,這些單詞基本是固定搭配的,使用者就很容易理解。
如果 open對應clear就有點讓人困惑了。
API接口入門(一):讀懂API接口文檔
本文目錄:
API接口是什么?
為什么我們需要API接口?
API接口的核心
一、API接口是什么?
我們來以一個常見的數學公式理解API,比如y=x+2,當x=2的時候,y=4,對么?
那此時,我們把y=x+2稱為接口,x=2稱為參數,y=4稱為返回結果,那這個接口的功能就是能把我們輸入的數加上2(注意:這里你可以發現接口自身是帶有邏輯的)。
類比地,我們來理解一個常見的場景,比如現在有一個可以把經緯度轉化為城市的接口,那當我輸入經度是55°,緯度是88°的時候,接口通過自己的邏輯運算,返回結果告訴我:杭州市。
這樣你就可以清晰地了解百度百科的官方解釋了,接口就是預先定義的函數邏輯,他是供其他系統請求,然后返回結果的一個東西。
二、為什么我們需要API接口?
背景:我們的業務系統涉及多方多面,如果要一個公司或者一個系統把所有業務都做完,那未免工作量太大了吧?并且如果其他系統或公司有更好的運算邏輯,那我們在設計功能的時候可以考慮利用接口進行開發。
核心需求:利用現有接口可以降低開發成本,縮短開發成本。
舉個例子:比如我是打車的APP,現在我需要在我的頁面上展現地圖的功能,對于我司而言,新做地圖功能未免成本過高,那我們可以在高德開放平臺或者百度地圖的開放平臺,找到地圖API,這樣的話我們只需要購買高德的服務,部署調用高德地圖API,這樣就可以快速在我們頁面上線地圖功能了。
三、API接口的核心
對于小白而言,初看API文檔可能是一頭霧水的——從哪里看,怎么看,看什么是擺在面前的問題。
其實對于產品經理而言,我們應該更關注這個公司可以提供什么樣的API接口服務,比如我知道高德可以提供地圖API,規劃路線的API,這樣的話在我們設計功能和工作中就可以想到調用他們的服務或者參考。
所以產品小白們看不懂也不用過于擔心,未來工作中你也會更深入了解清楚,因為看懂并不復雜,以下是API接口的核心點,所有的說明文檔離不開這5個核心點。
以下說明均以微信開放平臺為例說明,文末有各開放平臺的地址,大家有空可以去學習。好了,事不宜遲,現在我們來建立一個場景。
我們現在有一個APP,需要用戶在購買的時候調起微信支付的API,完成購買。請各位自動進入這個場景,把自己當作一位產品經理。
1. 接口地址
現在Now,用戶點擊付款,我們需要告訴微信,我們要調起你們的收銀臺啦!但,去哪里告訴呢?這就需要接口地址了,也就相當于向微信的這條鏈接傳輸指定的數據。
一個鏈接地址不是我們理解的一個頁面,你可以理解是一個電話號碼,小白們要改變這個觀念。
此時我們可以看到接口文檔告訴我們鏈接是如下這條,那我們現在已經撥通微信的電話了。
2. 請求參數(報文)
我們現在需要告訴微信,你想調用收銀臺對吧。那我們需要寫下來,此時生成的叫做報文,也就是你想告訴這個接口的內容是什么?相當于前文函數的輸入x=2。
一般來說,報文的格式和內容都是按接口文檔規定的。如下文就是微信開放平臺對調起收銀臺的報文要求。
我們先來看前2個參數,你現在跟微信在對話,是不是應該先告訴微信,你是誰?這里微信的文檔告訴你應該要用應用ID+商戶號來確定你的身份,什么意思呢?
比如你是A商戶,下面有a,b,c三個APP,所以微信要知道你是哪個商家,下面的哪個APP要用收銀臺。這是非常重要的,微信后面要把收到的錢打到對應的賬戶以及統計數據等。
那我們就在報文里面寫下這兩句話:
<appid>wx2421b1c4370ec43b</appid>(我的應用ID是wx2421…….)
<mch_id>10000100</mch_id>(我的商戶號是10000…….)
好了,現在微信知道你是誰了,那你要告訴微信,你需要微信支付幫你收多少錢對吧?這里定義了貨幣類型和總金額,也就是收什么貨幣,收多少錢。
這里你看,貨幣類型的必填寫了否,也就是說你也可以不告訴微信支付貨幣類型是什么,因為他在后面備注了默認是人民幣。
好的,那我們寫下兩段報文
<free_type>CNY</ free_type >(我要收人民幣)
<total_fee>1</total_fee>(我要收1元)
好了,現在微信知道你是誰,也知道要收多少錢了,那接下來微信支付要把收錢結果告訴你呀,因為你得知道用戶是成功支付了才能繼續發貨,服務啊等等的。所以這里我們用到通知地址,就是告訴微信,等下完事了他去哪里告訴你支付結果。那我們把地址寫好:
<notify_url>http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>
3. 返回結果
剛剛微信支付已經去收款了,現在他要在我們留下的通知地址中,告訴我們結果了。結果無非是兩種:成功收款?收款不成功?
(1)成功
很順利,現在用戶成功付錢了,并且微信也把成功的消息告訴我們了,并且他還把用戶支付的一些信息也告訴我們。
那這里就是微信支付成功收款后告訴我們的信息。
應用APPID,商戶號:告訴你我成功扣款的是哪家商戶的哪個APPID的交易。
業務結果:成功或失敗
(2)失敗
在產品設計的時候,我們往往很關注失敗的情況,當收款失敗的時候,微信同時會告訴你失敗的原因,如下圖很好理解,失敗的原因有很多很多種,我們在設計的時候往往要分析每種失敗的原因,為每個失敗的原因設計頁面和用戶提示,以確保用戶能理解。
以上就是API接口基本運作模式的理解,下面我將繼續更新API接口的一些更為深入和細節的關鍵元素,如請求方式/簽名/加解密等等。
可供參考的開放平臺網站
微信支付:https://pay.weixin.qq.com/wiki/doc/api/index.html
高德平臺開放平臺:https://lbs.amap.com/
php如何開發API接口
比如一個自定義函數:function test(){echo ‘hello world’;}就可以叫做 api。api 既可以是單個的函數,也可以是封裝在類里的方法,當然它們也是程序代碼。開發一個 api 的流程可以很簡單,也可以很復雜,視具體的編程任務而決定,并沒有特定的規則。比如,你需要為自己建立一個常用的函數庫,命名為 my.lib.php然后把你自己編寫的自定義函數,全部寫在這個文件里面,那么,你就擁有了自己的api。開發的時候,只需要引入 my.lib.php,你就可以調用自己的 api 了。這是一個比較簡單的例子。稍微復雜一點的,你可以把函數封裝在類里面,方便繼承和重用,還可以根據函數名稱做一些程序設計,這個一句話說不清楚,給一個簡單的例子吧:class mylib{function showmy(){echo ‘這是我的一個類方法’;}}調用的時候,先要實例化類,然后再調用方法。再復雜一點的就是使用類接口,區別就是接口里面定義的只是方法原型,而你需要通過具體的類來實現接口中的函數,具體請參考 php 手冊
java api接口文檔怎么編寫?
Java語言提供了一種強大的注釋形式:文檔注釋。可以將源代碼里的文檔注釋提取成一份系統的API文檔。我們在開發中定義類、方法時可以先添加文檔注釋,然后使用javadoc工具來生成自己的API文檔。
文檔注釋以斜線后緊跟兩個星號(/**)開始,以星號后緊跟一個斜線(*/)作為結尾,中間部分全部都是文檔注釋,會被提取到API文檔中。
自行搜索一下javadoc即可,示例如下:
1234567891011121314151617181920212223242526272829/** * 類描述 * * @author 作者 * @version 版本 */public class DemoClass { /** * 內部屬性:name */ private String name; /** * Setter方法 * @return name */ public String getName() { return name; } /** * Getter方法 * @param name */ public void tName(String name) { this.name = name; } }