當前位置:首頁 » 編程語言 » python開發api介面

python開發api介面

發布時間: 2022-07-21 01:10:42

python怎麼調用api介面

調用windows API的方式其實有兩種,第一種是通過第三方模塊pywin32。
如果小夥伴安裝了pip,可以通過pip安裝pywin32
在命令行中運行pip pst查看是否安裝了pywin32
如圖
我們這里調用一個windows最基本的API,MessageBox,該介面可以顯示一個對話框。
這里小編就不過多介紹了,只簡單的描述MessageBox介面,MessageBox是windows的一個API介面,作用是顯示一個對話框。
原型為:
int WINAPI MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType);
第一個參數hWnd,指明了該對話框屬於哪個窗口,lpText為窗口提示信息,lpCaption則為窗口標題,uType則是定義對話框的按鈕和圖標。
這里我們需要導入win32api這個模塊(隸屬於pywin32),如果需要宏定義的,API的宏被定義在win32con(同隸屬於pywin32)模塊內。
這里我們只導入一個win32api模塊,然後簡單的調用MessageBox顯示一個對話框即可。
如果我們不會安裝pywin32模塊,或者說不想安裝這個三方模塊。這時我們還有一個辦法。
調用python內置模塊ctypes,如果小夥伴有windows編程基礎的話,或者看過一點MSDN的話,都該知道,Windows的API其實是以dll文件(動態鏈接庫)方式存在的。
+和|效果是相同的
更多Python相關技術文章,請訪問Python教程欄目進行學習!以上就是小編分享的關於python怎麼調用api介面的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!

㈡ python 怎麼提供api介面

python有個etcd的庫,可以網上搜下看下這個庫的使用以及它開發的api介面,
不過之前go使用etcd的時候,是調用etcd本身的rest
api,沒有使用第三方的etcd的庫
etcd的api文檔github上有的,搜下這個coreos/etcd
你可以選擇自己喜歡的方式

㈢ 如何使用python 開發一個api

使用 Python 和 Flask 設計 RESTful API

近些年來 REST (REpresentational State Transfer) 已經變成了 web services 和 web APIs 的標配。

在本文中我將向你展示如何簡單地使用 Python 和 Flask 框架來創建一個 RESTful 的 web service。

什麼是 REST?

六條設計規范定義了一個 REST 系統的特點:

  • 客戶端-伺服器: 客戶端和伺服器之間隔離,伺服器提供服務,客戶端進行消費。

  • 無狀態: 從客戶端到伺服器的每個請求都必須包含理解請求所必需的信息。換句話說, 伺服器不會存儲客戶端上一次請求的信息用來給下一次使用。

  • 緩存: 伺服器必須明示客戶端請求能否緩存。

  • 分層系統: 客戶端和伺服器之間的通信應該以一種標準的方式,就是中間層代替伺服器做出響應的時候,客戶端不需要做任何變動。

  • 統一的介面: 伺服器和客戶端的通信方法必須是統一的。

  • 按需編碼: 伺服器可以提供可執行代碼或腳本,為客戶端在它們的環境中執行。這個約束是唯一一個是可選的。

  • 什麼是一個 RESTful 的 web service?

    REST 架構的最初目的是適應萬維網的 HTTP 協議。

    RESTful web services 概念的核心就是「資源」。 資源可以用URI來表示。客戶端使用 HTTP 協議定義的方法來發送請求到這些 URIs,當然可能會導致這些被訪問的」資源「狀態的改變。

    HTTP 標準的方法有如下:

  • ========== ===================== ==================================

  • HTTP 方法 行為 示例

  • ========== ===================== ==================================

  • GET 獲取資源的信息 http://example.com/api/orders

  • GET 獲取某個特定資源的信息 http://example.com/api/orders/123

  • POST 創建新資源 http://example.com/api/orders

  • PUT 更新資源 http://example.com/api/orders/123

  • DELETE 刪除資源 http://example.com/api/orders/123

  • ========== ====================== ==================================

  • REST 設計不需要特定的數據格式。在請求中數據可以以JSON形式, 或者有時候作為 url 中查詢參數項。

    設計一個簡單的 web service

    堅持 REST 的准則設計一個 web service 或者 API 的任務就變成一個標識資源被展示出來以及它們是怎樣受不同的請求方法影響的練習。

    比如說,我們要編寫一個待辦事項應用程序而且我們想要為它設計一個 web service。要做的第一件事情就是決定用什麼樣的根 URL 來訪問該服務。例如,我們可以通過這個來訪問:

    http://[hostname]/todo/api/v1.0/

    在這里我已經決定在 URL 中包含應用的名稱以及 API 的版本號。在 URL 中包含應用名稱有助於提供一個命名空間以便區分同一系統上的其它服務。在 URL 中包含版本號能夠幫助以後的更新,如果新版本中存在新的和潛在不兼容的功能,可以不影響依賴於較舊的功能的應用程序。

    下一步驟就是選擇將由該服務暴露(展示)的資源。這是一個十分簡單地應用,我們只有任務,因此在我們待辦事項中唯一的資源就是任務。

    我們的任務資源將要使用 HTTP 方法如下:

  • ========== =============================================== =============================

  • HTTP 方法 URL 動作

  • ========== =============================================== ==============================

  • GET http://[hostname]/todo/api/v1.0/tasks 檢索任務列表

  • GET http://[hostname]/todo/api/v1.0/tasks/[task_id] 檢索某個任務

  • POST http://[hostname]/todo/api/v1.0/tasks 創建新任務

  • PUT http://[hostname]/todo/api/v1.0/tasks/[task_id] 更新任務

  • DELETE http://[hostname]/todo/api/v1.0/tasks/[task_id] 刪除任務

  • ========== ================================================ =============================

  • 我們定義的任務有如下一些屬性:

  • id: 任務的唯一標識符。數字類型。

  • title: 簡短的任務描述。字元串類型。

  • description: 具體的任務描述。文本類型。

  • done: 任務完成的狀態。布爾值。

  • 目前為止關於我們的 web service 的設計基本完成。剩下的事情就是實現它!

    Flask 框架的簡介

    如果你讀過Flask Mega-Tutorial 系列,就會知道 Flask 是一個簡單卻十分強大的 Python web 框架。

    在我們深入研究 web services 的細節之前,讓我們回顧一下一個普通的 Flask Web 應用程序的結構。

    我會首先假設你知道 Python 在你的平台上工作的基本知識。 我將講解的例子是工作在一個類 Unix 操作系統。簡而言之,這意味著它們能工作在 Linux,Mac OS X 和 Windows(如果你使用Cygwin)。 如果你使用 Windows 上原生的 Python 版本的話,命令會有所不同。

    讓我們開始在一個虛擬環境上安裝 Flask。如果你的系統上沒有 virtualenv,你可以從https://pypi.python.org/pypi/virtualenv上下載:

  • $ mkdir todo-api

  • $ cd todo-api

  • $ virtualenv flask

  • New python executable in flask/bin/python

  • Installing setuptools............................done.

  • Installing pip...................done.

  • $ flask/bin/pip install flask

  • 既然已經安裝了 Flask,現在開始創建一個簡單地網頁應用,我們把它放在一個叫 app.py 的文件中:

  • #!flask/bin/pythonfrom flask import Flaskapp = Flask(__name__)@app.route('/')def index():

  • return "Hello, World!"if __name__ == '__main__':

  • app.run(debug=True)

  • 為了運行這個程序我們必須執行 app.py:

  • $ chmod a+x app.py

  • $ ./app.py

  • * Running on http://127.0.0.1:5000/

  • * Restarting with reloader

  • 現在你可以啟動你的網頁瀏覽器,輸入http://localhost:5000看看這個小應用程序的效果。

    簡單吧?現在我們將這個應用程序轉換成我們的 RESTful service!

    使用 Python 和 Flask 實現 RESTful services

    使用 Flask 構建 web services 是十分簡單地,比我在Mega-Tutorial中構建的完整的服務端的應用程序要簡單地多。

    在 Flask 中有許多擴展來幫助我們構建 RESTful services,但是在我看來這個任務十分簡單,沒有必要使用 Flask 擴展。

    我們 web service 的客戶端需要添加、刪除以及修改任務的服務,因此顯然我們需要一種方式來存儲任務。最直接的方式就是建立一個小型的資料庫,但是資料庫並不是本文的主體。學習在 Flask 中使用合適的資料庫,我強烈建議閱讀Mega-Tutorial。

    這里我們直接把任務列表存儲在內存中,因此這些任務列表只會在 web 伺服器運行中工作,在結束的時候就失效。 這種方式只是適用我們自己開發的 web 伺服器,不適用於生產環境的 web 伺服器, 這種情況一個合適的資料庫的搭建是必須的。

    我們現在來實現 web service 的第一個入口:

  • #!flask/bin/pythonfrom flask import Flask, jsonifyapp = Flask(__name__)tasks = [

  • {

  • 'id': 1,

  • 'title': u'Buy groceries',

  • 'description': u'Milk, Cheese, Pizza, Fruit, Tylenol',

  • 'done': False

  • },

  • {

  • 'id': 2,

  • 'title': u'Learn Python',

  • 'description': u'Need to find a good Python tutorial on the web',

  • 'done': False

  • }]@app.route('/todo/api/v1.0/tasks', methods=['GET'])def get_tasks():

  • return jsonify({'tasks': tasks})if __name__ == '__main__':

  • app.run(debug=True)

  • 正如你所見,沒有多大的變化。我們創建一個任務的內存資料庫,這里無非就是一個字典和數組。數組中的每一個元素都具有上述定義的任務的屬性。

    取代了首頁,我們現在擁有一個 get_tasks 的函數,訪問的 URI 為 /todo/api/v1.0/tasks,並且只允許 GET 的 HTTP 方法。

    這個函數的響應不是文本,我們使用 JSON 數據格式來響應,Flask 的 jsonify 函數從我們的數據結構中生成。

    使用網頁瀏覽器來測試我們的 web service 不是一個最好的注意,因為網頁瀏覽器上不能輕易地模擬所有的 HTTP 請求的方法。相反,我們會使用 curl。如果你還沒有安裝 curl 的話,請立即安裝它。

    通過執行 app.py,啟動 web service。接著打開一個新的控制台窗口,運行以下命令:

  • $ curl -i http://localhost:5000/todo/api/v1.0/tasks

  • HTTP/1.0 200 OK

  • Content-Type: application/json

  • Content-Length: 294

  • Server: Werkzeug/0.8.3 Python/2.7.3

  • Date: Mon, 20 May 2013 04:53:53 GMT


  • {

  • "tasks": [

  • {

  • "description": "Milk, Cheese, Pizza, Fruit, Tylenol",

  • "done": false,

  • "id": 1,

  • "title": "Buy groceries"

  • },

  • {

  • "description": "Need to find a good Python tutorial on the web",

  • "done": false,

  • "id": 2,

  • "title": "Learn Python"

  • }

  • ]

  • }

  • 我們已經成功地調用我們的 RESTful service 的一個函數!

    現在我們開始編寫 GET 方法請求我們的任務資源的第二個版本。這是一個用來返回單獨一個任務的函數:

  • from flask import [email protected]('/todo/api/v1.0/tasks/<int:task_id>', methods=['GET'])def get_task(task_id):

  • task = filter(lambda t: t['id'] == task_id, tasks)

  • if len(task) == 0:

  • abort(404)

  • return jsonify({'task': task[0]})

  • 第二個函數有些意思。這里我們得到了 URL 中任務的 id,接著 Flask 把它轉換成 函數中的 task_id 的參數。

    我們用這個參數來搜索我們的任務數組。如果我們的資料庫中不存在搜索的 id,我們將會返回一個類似 404 的錯誤,根據 HTTP 規范的意思是 「資源未找到」。

    如果我們找到相應的任務,那麼我們只需將它用 jsonify 打包成 JSON 格式並將其發送作為響應,就像我們以前那樣處理整個任務集合。

    調用 curl 請求的結果如下:

  • $ curl -i http://localhost:5000/todo/api/v1.0/tasks/2

  • HTTP/1.0 200 OK

  • Content-Type: application/json

  • Content-Length: 151

  • Server: Werkzeug/0.8.3 Python/2.7.3

  • Date: Mon, 20 May 2013 05:21:50 GMT


  • {

  • "task": {

  • "description": "Need to find a good Python tutorial on the web",

  • "done": false,

  • "id": 2,

  • "title": "Learn Python"

  • }

  • }

  • $ curl -i http://localhost:5000/todo/api/v1.0/tasks/3

  • HTTP/1.0 404 NOT FOUND

  • Content-Type: text/html

  • Content-Length: 238

  • Server: Werkzeug/0.8.3 Python/2.7.3

  • Date: Mon, 20 May 2013 05:21:52 GMT


  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

  • <title>404 Not Found</title>

  • <h1>Not Found</h1>

  • <p>The requested URL was not found on the server.</p><p>If you entered the URL manually please check your spelling and try again.</p>

  • 當我們請求 id #2 的資源時候,我們獲取到了,但是當我們請求 #3 的時候返回了 404 錯誤。有關錯誤奇怪的是返回的是 HTML 信息而不是 JSON,這是因為 Flask 按照默認方式生成 404 響應。由於這是一個 Web service 客戶端希望我們總是以 JSON 格式回應,所以我們需要改善我們的 404 錯誤處理程序:

  • from flask import [email protected](404)def not_found(error):

  • return make_response(jsonify({'error': 'Not found'}), 404)

  • 我們會得到一個友好的錯誤提示:

  • $ curl -i http://localhost:5000/todo/api/v1.0/tasks/3

  • HTTP/1.0 404 NOT FOUND

  • Content-Type: application/json

  • Content-Length: 26

  • Server: Werkzeug/0.8.3 Python/2.7.3

  • Date: Mon, 20 May 2013 05:36:54 GMT


  • {

  • "error": "Not found"

  • }

  • 接下來就是 POST 方法,我們用來在我們的任務資料庫中插入一個新的任務:

  • from flask import [email protected]('/todo/api/v1.0/tasks', methods=['POST'])def create_task():

  • if not request.json or not 'title' in request.json:

  • abort(400)

  • task = {

  • 'id': tasks[-1]['id'] + 1,

  • 'title': request.json['title'],

  • 'description': request.json.get('description', ""),

  • 'done': False

  • }

  • tasks.append(task)

  • return jsonify({'task': task}), 201

  • 添加一個新的任務也是相當容易地。只有當請求以 JSON 格式形式,request.json 才會有請求的數據。如果沒有數據,或者存在數據但是缺少 title 項,我們將會返回 400,這是表示請求無效。

    接著我們會創建一個新的任務字典,使用最後一個任務的 id + 1 作為該任務的 id。我們允許 description 欄位缺失,並且假設 done 欄位設置成 False。

    我們把新的任務添加到我們的任務數組中,並且把新添加的任務和狀態 201 響應給客戶端。

    使用如下的 curl 命令來測試這個新的函數:

  • $ curl -i -H "Content-Type: application/json" -X POST -d '{"title":"Read a book"}' http://localhost:5000/todo/api/v1.0/tasks

  • HTTP/1.0 201 Created

  • Content-Type: application/json

  • Content-Length: 104

  • Server: Werkzeug/0.8.3 Python/2.7.3

  • Date: Mon, 20 May 2013 05:56:21 GMT


  • {

  • "task": {

  • "description": "",

  • "done": false,

  • "id": 3,

  • "title": "Read a book"

  • }

  • }

  • 注意:如果你在 Windows 上並且運行 Cygwin 版本的 curl,上面的命令不會有任何問題。然而,如果你使用原生的 curl,命令會有些不同:

  • curl -i -H "Content-Type: application/json" -X POST -d "{"""title""":"""Read a book"""}" http://localhost:5000/todo/api/v1.0/tasks

  • 當然在完成這個請求後,我們可以得到任務的更新列表:

  • $ curl -i http://localhost:5000/todo/api/v1.0/tasks

  • HTTP/1.0 200 OK

  • Content-Type: application/json

  • Content-Length: 423

  • Server: Werkzeug/0.8.3 Python/2.7.3

  • Date: Mon, 20 May 2013 05:57:44 GMT


  • {

  • "tasks": [

  • {

  • "description": "Milk, Cheese, Pizza, Fruit, Tylenol",

  • "done": false,

  • "id": 1,

  • "title": "Buy groceries"

  • },

  • {

  • "description": "Need to find a good Python tutorial on the web",

  • "done": false,

  • "id": 2,

  • "title": "Learn Python"

  • },

  • {

  • "description": "",

  • "done": false,

  • "id": 3,

  • "title": "Read a book"

  • }

  • ]

  • }

  • 剩下的兩個函數如下所示:

  • @app.route('/todo/api/v1.0/tasks/<int:task_id>', methods=['PUT'])def update_task(task_id):

  • task = filter(lambda t: t['id'] == task_id, tasks)

  • if len(task) == 0:

  • abort(404)

  • if not request.json:

  • abort(400)

  • if 'title' in request.json and type(request.json['title']) != unicode:

  • abort(400)

  • if 'description' in request.json and type(request.json['description']) is not unicode:

  • abort(400)

㈣ python如何寫api

其實就是定義一個函數或類,規范化其輸入輸出格式,給其他地方調用就是了

㈤ python中怎樣調用百度搜索的API介面

網路搜索不用API介面,它是get請求,自己拼接就行了。

打開網路搜索,隨便搜索一個關鍵字,看地址欄就有get請求的參數。

㈥ 如何用python 快速做出一個api服務

python 輕量級的框架flask
可以讓你在兩分鍾內,搭建出一個簡單的
api介面服務
輕量級不代表功能簡單,容易上手
它的優勢是,模塊化,易擴展,定製性強
比如:一個最簡單api介面2 分鍾搞定
加入你需要加入登錄驗證功能
加入頁面跳轉功能呢
如果想要渲染載入前段頁面呢
flask框里有你意想不到的插件,讓你完成最夠強大
的功能,怎麼樣,趕緊來試試吧

㈦ python怎麼使用api介面測試

在開發中,需要測試web-api的介面 spring mvc 使用單元測試非常方便,但是,受不了單元測試的啟動速度。用python寫了一個小腳本,用於測試介面,
測試腳本配置文件
api.yaml
server:
url: http://127.0.0.1:9000/ihome/

api:
name:
#api-v2-neighbor-list.yaml
- api/v2/neighbor/list

api-v2-neighbor-list.yaml
介面配置文件
method:
post
data:
#post 的 body 的json
postSid: a1
userSid: u2

python 腳本
import requests, json, yaml, sys

def apiTest(apiName):
f = open("api.yaml")
obj = yaml.safe_load(f)
f.close()

if apiName != "":
runApi(obj["server"]["url"] + apiName, apiName.replace("/", "-") + ".yaml")
return;

apis = obj['api']["name"]
for api in apis:
runApi(obj["server"]["url"] + api, api.replace("/", "-") + ".yaml")

def runApi(url, dataFile):
headers = {'Content-Type' : 'application/json; charset=UTF-8',
'X-Requested-With' : 'XMLHttpRequest',
'Connection' : 'keep-alive',
'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36'
}

㈧ python本地搭了一個API介面怎麼讓其他人訪問

API 介面屬於一種操作系統或程序介面,而後兩者都屬於直接用戶介面。 有時公司會將 API 作為其公共開放系統。也就是說,公司制定自己的系統介面標准,當需要執行系統整合、自定義和程序應用等操作時,公司所有成員都可以通過該介面標准調用源代碼,該介面標准被稱之為開放式 API。

㈨ 用快遞100企業版介面(API)實現快遞查詢-Python

python實現快遞鳥API查詢介面 數據簽名通用方法

為了方便朋友們使用python開發,封裝了相關代碼,讓大家少踩坑。

注冊快遞鳥賬號獲取APIkey ID的流程就不說了,大家在網路搜索快遞鳥就官網免費注冊。

下面直接提供核心源代碼

# 請求數據處理方法

def before_reqData(shipperCode, logisticCode):

"""請求報文"""

frs_reqData = {

"OrderCode": "", # 可為空

"ShipperCode": shipperCode,

"LogisticCode": logisticCode

}

# 數據轉換為json格式

data = json.mps(frs_reqData)

# 進行url編碼

# 替換內容

reqData = quote(data).replace("%20%", "%")

return reqData

def data_sign(shipperCode, logisticCode):

"""簽名datasign"""

frs_reqData = {

'OrderCode': '',

'ShipperCode': shipperCode,

'LogisticCode': logisticCode

}

APIKey = "554343b2-7252-439b-b4eb-1af42c8f2175";

# 請求內容(未編碼) + APIKey

# MD5加密前去除空格

data = json.mps(frs_reqData).replace(": ", ":").replace(", ", ",") + APIKey

# md5加密

sign_md5 = hashlib.md5(data.encode("utf-8")).hexdigest()

# Base64編碼

data_sign = base64.b64encode(sign_md5.encode("utf-8")).decode("utf-8")

return data_sign

熱點內容
sqlifthen男女 發布:2025-02-01 01:44:59 瀏覽:690
幻靈和安卓哪個互通 發布:2025-02-01 01:43:33 瀏覽:648
電腦配置夠但為什麼打lol掉幀 發布:2025-02-01 01:37:08 瀏覽:316
21款朗逸哪個配置比較劃算 發布:2025-02-01 01:35:32 瀏覽:976
建築動畫片腳本 發布:2025-02-01 01:35:21 瀏覽:469
管家婆如何用阿里雲伺服器 發布:2025-02-01 01:29:09 瀏覽:649
解壓耳放 發布:2025-02-01 01:20:18 瀏覽:175
cars演算法 發布:2025-02-01 01:02:26 瀏覽:177
資料庫超載 發布:2025-02-01 00:57:15 瀏覽:33
fgo安卓如何玩日服 發布:2025-02-01 00:49:40 瀏覽:716