Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
OST請求是HTTP協(xié)議中的一種請求方法,用于向服務(wù)器提交數(shù)據(jù)。POST請求通常用于向服務(wù)器發(fā)送數(shù)據(jù),例如表單數(shù)據(jù)、JSON數(shù)據(jù)等。
在使用POST請求發(fā)送JSON數(shù)據(jù)時,需要將數(shù)據(jù)以JSON格式進(jìn)行編碼,并將Content-Type設(shè)置為application/json。以下是一個使用POST請求發(fā)送JSON數(shù)據(jù)的示例:
```python
import requests
import json
# 定義要發(fā)送的JSON數(shù)據(jù)
data = {
"name": "John",
"age": 25,
"email": "john@example.com"
}
# 將JSON數(shù)據(jù)編碼為字符串
json_data = json.dumps(data)
# 設(shè)置請求頭
headers = {
"Content-Type": "application/json"
}
# 發(fā)送POST請求
response = requests.post(url, data=json_data, headers=headers)
# 解析響應(yīng)數(shù)據(jù)
result = response.json()
# 打印響應(yīng)結(jié)果
print(result)
```
在上述示例中,首先定義了要發(fā)送的JSON數(shù)據(jù),然后使用json.dumps方法將JSON數(shù)據(jù)編碼為字符串。接下來,設(shè)置請求頭的Content-Type為application/json,以告知服務(wù)器請求的數(shù)據(jù)類型。最后,使用requests庫的post方法發(fā)送POST請求,并將JSON數(shù)據(jù)作為請求的數(shù)據(jù)參數(shù)傳遞。
服務(wù)器接收到POST請求后,可以通過解析請求數(shù)據(jù)來獲取JSON數(shù)據(jù)。在Python的Flask框架中,可以使用request.json屬性來獲取JSON數(shù)據(jù)。以下是一個使用Flask接收POST請求并解析JSON數(shù)據(jù)的示例:
```python
from flask import Flask, request
app = Flask(__name__)
@app.route('/api', methods=['POST'])
def api():
json_data = request.json
name = json_data.get('name')
age = json_data.get('age')
email = json_data.get('email')
# 處理JSON數(shù)據(jù)...
return 'OK'
if __name__ == '__main__':
app.run()
```
在上述示例中,使用Flask框架創(chuàng)建了一個接收POST請求的API接口。當(dāng)接收到POST請求時,可以通過request.json屬性獲取JSON數(shù)據(jù)。然后,可以根據(jù)JSON數(shù)據(jù)中的字段進(jìn)行相應(yīng)的處理。最后,返回一個字符串作為響應(yīng)。
使用POST請求發(fā)送JSON數(shù)據(jù)時,需要確保服務(wù)器端能夠正確解析JSON數(shù)據(jù),并按照預(yù)期進(jìn)行處理。同時,還需要注意請求頭中Content-Type的設(shè)置,以確保服務(wù)器能夠正確識別請求的數(shù)據(jù)類型。
Postman 可以輕松創(chuàng)建和發(fā)送 API 請求。向端點發(fā)送請求、從數(shù)據(jù)源檢索數(shù)據(jù)或測試 API 的功能。您無需在終端中輸入命令或編寫任何代碼。創(chuàng)建一個新請求并選擇Send,API 響應(yīng)出現(xiàn)在 Postman 中。
定義的 API 請求
API 為一個應(yīng)用程序訪問另一個應(yīng)用程序的功能提供了一種結(jié)構(gòu)化的方式。通常,這種通信通過 API 服務(wù)器在 Internet 上發(fā)生。客戶端應(yīng)用程序(如移動應(yīng)用程序)向服務(wù)器發(fā)送請求,請求處理后服務(wù)器向客戶端返回響應(yīng)。
請求包括 API 端點的 URL 和 HTTP 請求方法。該方法指示您希望 API 執(zhí)行的操作。以下是一些最常用的方法:
- GET從 API 檢索數(shù)據(jù)。
- POST將新數(shù)據(jù)發(fā)送到 API。
- PATCH并PUT更新現(xiàn)有數(shù)據(jù)。
- DELETE刪除現(xiàn)有數(shù)據(jù)。
以登錄功能為例請求設(shè)置如下圖:
接口名稱編輯
接口訪問方式設(shè)置:GET、Post、Put、Delete等
URL編輯
發(fā)送按鈕
params設(shè)置
Authorization 認(rèn)證方式:
Headers設(shè)置
常規(guī)默認(rèn)頭設(shè)置
Body(參數(shù)設(shè)置)
- none
- form-data
網(wǎng)站表單通常以multipart/form-data. form-data 您可以使用“正文”選項卡在 Postman 中復(fù)制此內(nèi)容。表單數(shù)據(jù)允許您發(fā)送鍵值對,并指定內(nèi)容類型。
您可以使用表單數(shù)據(jù)附加文件。當(dāng)您反復(fù)進(jìn)行發(fā)送相同文件的 API 調(diào)用時,Postman 將保留您的文件路徑以供后續(xù)使用。這也有助于您運行包含需要上傳文件的請求的集合。不支持上傳多個文件,每個文件都有自己的內(nèi)容類型。
- x-www-from-urlencoded
URL 編碼的數(shù)據(jù)使用與 URL 參數(shù)相同的編碼。如果您的 API 需要 url 編碼的數(shù)據(jù),請在請求x-www-form-urlencoded的“正文”選項卡中選擇。輸入要與請求一起發(fā)送的鍵值對,Postman 將在發(fā)送前對其進(jìn)行編碼。
表單數(shù)據(jù)和 url 編碼之間有時會混淆。如果您不確定需要哪一個,請咨詢您的 API 提供商。
- raw
您可以使用原始身體數(shù)據(jù)來發(fā)送您可以作為文本輸入的任何內(nèi)容。使用raw選項卡和類型下拉列表來指示數(shù)據(jù)的格式(Text、JavaScript、JSON、HTML或XML),Postman 將啟用語法突出顯示以及將相關(guān)標(biāo)頭附加到您的請求中。
- binary
您可以使用二進(jìn)制數(shù)據(jù)來發(fā)送無法通過請求正文在 Postman 編輯器中手動輸入的信息,例如圖像、音頻和視頻文件(您也可以發(fā)送文本文件)。
- graphql:您可以通過選擇請求正文中的GraphQL選項卡來發(fā)送帶有 Postman 請求的 GraphQL 查詢。在查詢區(qū)域中輸入您的代碼,并在GraphQL 變量部分中輸入任何變量
這些body體格式設(shè)置按后臺接口定義進(jìn)行設(shè)置即可。具體表達(dá)每個公司的表述都有所不同,筆者就不瞎寫自己的文案了。
Pre-request Script(預(yù)執(zhí)行腳本設(shè)置)
```javascript
pm.globals.get("variable_key");
pm.variables.get("variable_key");
pm.environment.get("variable_key");
pm.collectionVariables.get("variable_key");
pm.environment.set("variable_key", "variable_value");
pm.globals.set("variable_key", "variable_value");
pm.collectionVariables.set("variable_key", "variable_value");
pm.environment.unset("variable_key");
pm.globals.unset("variable_key");
pm.collectionVariables.unset("variable_key");
pm.sendRequest("https://postman-echo.com/get", function (err, response) {
console.log(response.json());
});
```
不多說這個了。需要進(jìn)行JavaScript編程。后面講解腳本會涉及。這里不展開了
Tests
```javascript
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
```
這個需要**單元測試**理念和**JavaScript開發(fā)語言**。也略過。后面文章展開
Settings
一些請求設(shè)置
發(fā)送請求
準(zhǔn)備好發(fā)送您的第一個請求了嗎?打開 Postman 并開始:
在主工作區(qū)中選擇+打開一個新選項卡。
輸入https://console-api.apipost.cn/api/demo/login請求 URL。
選擇發(fā)送。
您將在下部窗格中看到從服務(wù)器發(fā)送的響應(yīng)數(shù)據(jù)。
```javascript
{
"code": 10000,
"msg": "success",
"data": {
"token": "31c011ce830d442af42ab3df31774a80"
}
}
```
在此示例中,Postman 充當(dāng)客戶端應(yīng)用程序并與 API 服務(wù)器通信。以下是您選擇Send時發(fā)生的情況:
Postman 向位于 的Postman Echo API服務(wù)器發(fā)送了一個GET請求。console-api.apipost.cn API 服務(wù)器接收到請求,對其進(jìn)行處理,然后將響應(yīng)返回給 Postman。
Postman 收到響應(yīng)并將其顯示在“響應(yīng)”窗格中。
Body
Postman Body選項卡為您提供了多種工具,可幫助您快速了解響應(yīng)。您可以在以下四種視圖之一中查看正文:Pretty、Raw、Preview和Visualize。
在響應(yīng)中查找項目- 要打開搜索欄,請選擇 搜索
結(jié)果窗格中的搜索圖標(biāo)。您還可以將光標(biāo)放在響應(yīng)中并選擇?+F或Ctrl+F。此選項在響應(yīng)的預(yù)覽或可視化視圖中不可用。
請注意,如果響應(yīng)的Content-Type標(biāo)頭表明響應(yīng)是圖像,則 Postman 將自動檢測并渲染圖像
Pretty
Pretty 視圖格式化 JSON 或 XML 響應(yīng),以便更容易查看。Pretty 視圖中的鏈接被突出顯示,選擇它們可以在 Postman 中加載帶有鏈接 URL 的 GET 請求。
要導(dǎo)航大型響應(yīng),請選擇行左側(cè)的向下箭頭以折疊響應(yīng)的大部分。
強制 JSON 格式。為了使 Postman 自動格式化正文,響應(yīng)必須具有適當(dāng)?shù)腃ontent-Type標(biāo)頭。如果您收到帶有不同Content-Type標(biāo)頭的響應(yīng),您可以通過 JSON 強制格式化。在 Postman 標(biāo)題中,選擇設(shè)置圖標(biāo) 設(shè)置圖標(biāo) ,然后選擇設(shè)置。在常規(guī)選項卡中,從語言檢測下拉列表中選擇JSON 。
Raw
原始視圖是一個帶有響應(yīng)正文的大文本區(qū)域。它可以指示您的響應(yīng)是否被縮小
Preview
預(yù)覽視圖在沙盒 iframe 中呈現(xiàn)響應(yīng)。默認(rèn)情況下,某些 Web 框架會返回 HTML 錯誤,而 Preview 在這些情況下對調(diào)試特別有幫助。
由于 iframe 沙盒限制,JavaScript 和圖像在 iframe 中被關(guān)閉。對于二進(jìn)制響應(yīng)類型,您可以選擇“發(fā)送和下載”以將響應(yīng)保存在本地。然后,您可以使用適當(dāng)?shù)牟榭雌鞑榭此_@使您可以靈活地測試音頻文件、PDF、zip 文件或 API 返回的任何其他文件類型。
Visualize
Visualize 視圖根據(jù)您添加到請求Tests的可視化代碼呈現(xiàn) API 響應(yīng)中的數(shù)據(jù)。有關(guān)如何添加、使用和調(diào)試可視化代碼的詳細(xì)信息
Cookies
您可以在Cookies選項卡中查看服務(wù)器發(fā)送的 cookie。cookie 的條目包括其名稱、值、關(guān)聯(lián)的域和路徑以及有關(guān) cookie 的其他信息。
Headers
標(biāo)題在標(biāo)題選項卡下顯示為鍵值對。將鼠標(biāo)懸停在 信息圖標(biāo) 標(biāo)頭名稱旁邊的信息圖標(biāo)上可查看根據(jù) HTTP 規(guī)范的標(biāo)頭描述。
如果您發(fā)送 HEAD 請求,Postman 將默認(rèn)顯示Headers選項卡而不是Body選項卡。
Test Results
如果您正在查看的 API 請求有任何測試腳本,則結(jié)果將顯示在“測試結(jié)果”選項卡中
network
當(dāng)您的 API 返回響應(yīng)時,Postman 會顯示網(wǎng)絡(luò)信息。將鼠標(biāo)懸停在網(wǎng)絡(luò)圖標(biāo) 網(wǎng)絡(luò)信息圖標(biāo) 上可查看您發(fā)送的請求的本地和遠(yuǎn)程 IP 地址。
當(dāng)您提出https請求時,網(wǎng)絡(luò)圖標(biāo)包括一個掛鎖。當(dāng)您將鼠標(biāo)懸停在該圖標(biāo)上時,網(wǎng)絡(luò)信息將顯示其他信息,包括證書驗證詳細(xì)信息。
響應(yīng)代碼
Postman 顯示 API 返回的響應(yīng)代碼。將鼠標(biāo)懸停在響應(yīng)代碼上以查看代碼的簡短描述及其含義。
響應(yīng)時間
Postman 自動計算響應(yīng)從服務(wù)器到達(dá)所需的時間(以毫秒為單位)。此信息可用于一些初步的性能測試。將鼠標(biāo)懸停在響應(yīng)時間上可查看圖表,其中包含有關(guān)流程中每個事件所用時間的信息。
響應(yīng)大小
Postman 顯示響應(yīng)的大致大小。將鼠標(biāo)懸停在響應(yīng)大小上以查看按正文和標(biāo)題大小劃分的細(xì)分。
保存回復(fù)
如果請求已保存在集合中,您可以保存該請求的響應(yīng)。返回響應(yīng)后,選擇Save Response。
選擇另存為示例以將響應(yīng)保存為您以后可以訪問的示例。
選擇保存到文件以將響應(yīng)保存為 JSON 文件。
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
"net/url"
"strings"
)
func postForm() {
u := "http://httpbin.org/post"
//構(gòu)造請求參數(shù)
values := make(url.Values)
values.Add("name", "zhangsan")
values.Add("age", "18")
encode := values.Encode()
//發(fā)送POST請求
resp, err := http.Post(
u,
"application/x-www-form-urlencoded", //如果是Post Form 這里要寫application/x-www-form-urlencoded
strings.NewReader(encode), //如果是Post Form 這里要寫strings.NewReader
)
if err != nil {
log.Panicln(err)
}
defer func() { _ = resp.Body.Close() }()
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Panicln(err)
}
fmt.Println(string(b))
}
func postJson() {
u := "http://httpbin.org/post"
//構(gòu)造請求參數(shù)
s := struct {
Name string `json:"name"`
Age string `json:"age"`
}{
Name: "lisi",
Age: "28",
}
marshal, err := json.Marshal(s)
if err != nil {
return
}
//發(fā)送POST請求
resp, err := http.Post(
u,
"application/json", //如果是Post Json 這里要寫application/json
bytes.NewReader(marshal), //如果是Post Form 這里要寫bytes.NewReader
)
if err != nil {
log.Panicln(err)
}
defer func() { _ = resp.Body.Close() }()
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Panicln(err)
}
fmt.Println(string(b))
}
func main() {
//postForm()
postJson()
}
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。