如何呼叫api介面

Noah_WB發表於2023-02-21

程式設計師是公司裡的技術崗位,是產品經理最親密的夥伴。但是程式設計師可以理解產品經理的工作,產品經理卻不一定理解程式設計師的工作,所以經常被無良程式設計師欺騙。從API介面這個維度,分析API的概念以及為什麼要了解它,避免PM們在實際工作中對程式碼技術一無所知。

在日常工作中,產品經理負責推動專案進展。當他們與程式設計師對接時,問完成這個功能需要多少天,程式設計師給出了五天的回答。雖然你的預期時間只有三天,但是你除了相信他,按照承諾給他五天時間之外,也無能為力,最終導致專案的拖延。

你不知道這個函式有多少程式碼,程式設計師的工作量有多大。他利用你的無知故意拖延你的專案進度,你是最後一個背黑鍋的。

程式設計師是公司裡的終極技術崗位。他能理解我們的工作,但我們很難理解他們。為了防止PM在實際工作中受到無良程式設計師的傷害,本文從API介面這個維度分析了API的概念以及為什麼要理解它,從而避免PM在實際工作中對程式碼技術的無知。

一、API的概念

API,官方定義為應用程式設計介面。它指的是一些預定義的介面,用來提供應用程式和開發人員基於某種軟體或硬體可以訪問的一組例程,而不必訪問原始碼或瞭解內部工作機制的細節。

二、為什麼要理解API文件?

既然API這麼複雜,不屬於PM的工作範圍,為什麼還需要我們費盡心思去理解呢?我們的目的是什麼。

1.定義所需的介面服務。

API有很多種,最基礎的就是產品最需要的,比如簡訊API、地圖API、語音API等。如果我們的產品涉及到這個功能,就必須瞭解這個API,這樣才能在需求設計階段考慮的更全面。

2.掌握專案開發的工作量,合理安排計劃。

說白了就是防止被程式設計師騙。當你走過去的時候,你發現程式設計師正在勤奮地工作。不好意思,人家是外包,就是欺負你看不懂程式碼。你生氣了嗎?但是,如果你知道介面的難度和工作量,並且明確他需要多長時間才能交給你,專案就不會被耽誤,也更有利於專案程式的進度。

3.聯合除錯測試,識別專案風險點。

一些關鍵介面,那些資料量大,需要大資料壓力測量的介面,必須透過連線測試,測量其更大流量,最佳化或設定限制,防止系統崩潰。

4.促進專案對接

如果PM懂一點技術,就不會開明顯做不到的玩笑,但還是要程式設計師來做。從這個角度來說,也更有利於團隊溝通,更有利於PM和程式設計師之間的和諧,避免矛盾,不至於打翻友誼之舟。瞭解API可以讓PM對技術有更深刻的理解,更好的衡量開發工作量,制定功能內容。

三。舉例說明API的重要性

優點:

開發者A開發了軟體A,而開發者B正在開發軟體B,A想利用B的一些成果或功能來輔助開發軟體B,但不想完全輸入軟體A。我該怎麼辦?於是A把軟體打包成一個函式,放在B的軟體裡。這個函式就是API。

如果沒有API,B必須經歷軟體A的全過程,這需要花費大量的時間和精力,但如果是介面來訪問一些功能,就簡單方便了。想用就用,想拔就拔。

有一杯密封的果汁叫資料庫;果汁上面有一根吸管,叫API。想喝杯子裡的果汁,因為是密封的,只能靠吸管插入,不然就喝不到果汁了。

在這個故事裡,你屬於某個系統。要想獲得果汁,必須透過一根吸管來實現,也就是一個介面,API,而這個API是資料庫中唯一的API。這樣,API就是一個提升專案功能和產品價值的輔助工具。

缺點:

由於API依賴於第三方軟體,訪問方在使用其他軟體包的功能的同時,為自己插入了一個監視器,存在惠友友資源網資料洩露給第三方的危險。所以如果是公司的核心功能,更好使用內部API。

四。總結:萬物皆有聯絡。

可能大家看了美國科幻大片,把程式設計師想象成了高智商的駭客。但現實是,大多數情況下,他們只負責修復bug,真正的原始碼只是在網上覆制貼上而已。所以不要被他的外表所迷惑,PM的應該知道他的優優資源網的工作量,只需要在團隊中給出明確的指令來管理專案的進度,大致瞭解程式設計師的工作內容,這樣你就可以管理對接了。

最後,我想說,在產品行業,一切都是相通的,PM不必質疑自己的工作,也不必自卑。如果程式設計師是科學家,那麼PM就是一個有友資源網的哲學家,只負責改造自然環境和人類社會的差異。其思維邏輯類似,程式設計師其實就是PM知識的技術流。

五、API的實際應用

請求示例:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.Charset;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.PrintWriter;
import java.net.URLConnection;
public class Example {
	private static String readAll(Reader rd) throws IOException {
		StringBuilder sb = new StringBuilder();
		int cp;
		while ((cp = rd.read()) != -1) {
			sb.append((char) cp);
		}
		return  sb.toString();
	}
	public static JSONObject postRequestFromUrl(String url, String body) throws IOException, JSONException {
		URL realUrl = new URL(url);
		URLConnection conn = realUrl.openConnection();
		conn.setDoOutput(true);
		conn.setDoInput(true);
		PrintWriter out = new PrintWriter(conn.getOutputStream());
		out.print(body);
		out.flush();
		InputStream instream = conn.getInputStream();
		try {
			BufferedReader rd = new BufferedReader(new InputStreamReader(instream, Charset.forName("UTF-8")));
			String jsonText = readAll(rd);
			JSONObject json = new JSONObject(jsonText);
			return json;
		} finally {
			instream.close();
		}
	}
	public static JSONObject getRequestFromUrl(String url) throws IOException, JSONException {
		URL realUrl = new URL(url);
		URLConnection conn = realUrl.openConnection();
		InputStream instream = conn.getInputStream();
		try {
			BufferedReader rd = new BufferedReader(new InputStreamReader(instream, Charset.forName("UTF-8")));
			String jsonText = readAll(rd);
			JSONObject json = new JSONObject(jsonText);
			return json;
		} finally {
			instream.close();
		}
	}
	public static void main(String[] args) throws IOException, JSONException {
		// 請求示例 url 預設請求引數已經URL編碼處理
		String url = "您自己的apiKey>&secret=<您自己的apiSecret>&num_iid=652874751412&is_promotion=1";
		JSONObject json = getRequestFromUrl(url);
		System.out.println(json.toString());
	}
}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026910/viewspace-2936175/,如需轉載,請註明出處,否則將追究法律責任。

相關文章