介面書寫注意事項

2021-08-22 00:20:54 字數 3572 閱讀 2641

1.文件要寫周全,需要的每個字段,規定是什麼型別,什麼含義要標柱清楚,寫完介面後自己先測試一下是否通過,不要直接扔給測試或者開發,然後反應錯誤了在進行修改

2. 介面要做到小,同時比較多,切記乙個介面的**量很多。做到介面要小而多,不要做大而全,以方便減少伺服器的壓力

4. 當資料庫裡的字段發生變更時,要及時更新文件,並和使用到的程式設計師和測試人員說一聲

5.介面的測試(如果是node.js / mongodb 的搭配,也可以弄個自動化測試),測試要包含所有的返回情況,介面的規範,可以遵循 restfull api

8. 用restful,最好開啟https,不然會被坑死的,運營商,瀏覽器,路由器一般發現4xx,5xx狀態,喜歡替換成自己的廣告,如果不用restful,返回的都是200狀態,就不會被替換成運營商或路由器自己的導航頁了,運營商,路由器容易擅自根據403,404狀態推自己的導航頁

如果服務端採取了防重放機制,要求http請求帶上時間戳,和伺服器的時間誤差超過一段距離則請求不合法。那麼,客戶端的時間戳不一定是正確的(有可能使用者改了系統時間),這種方案該怎麼調整?

(1)第一次啟動從伺服器獲取一次時間,之後客戶端自動計數維護這個時間,每秒加一,這樣就跟伺服器時間一致了 

(2):應該是需要時間戳的請求。帶上伺服器的時間戳。比如說修改個人資料。是請求個人資料。客戶端修改。傳送修改後的個人資料。在請求個人資料的時候伺服器就帶上時間戳。最好是上面所說的token。我們可以驗證這個時間戳。傳送的時候帶上這個時間戳或者token

關於session:
1、jwt oauth - slee
一次請求算乙個會話?還是token是有時效的?

1、token是有時效的,可以去更新-蝸牛

2、token 不儲存到客戶端本地。 - windk

每次請求前必須過去一次?

1、對,時效時間內,多次請求 可以只取一次 - windk

2、token這個屬於安全性的東西 取決於資訊的重要性 通常來說安全性要求越高,所要做的活就越,我們大致換了經歷過三種方面:

第一種 直接在 header裡傳使用者名稱 密碼 最簡單,但最不安全。

第二種 就在客戶端種cookie 這個跟web一樣了。

第三種 就是用token 用一定的規則生成token 客戶端每次請求帶token 服務端用同一規則生成token 把token有效時間 放到token加密規則裡 省得再驗證乙個時間戳

理論版的描述如下:

如果錯誤則返回錯誤資訊。

如果驗證正確,生成乙個隨機的不重複的token字串(例如"daf32da456hfdh"),在redis或memcache中維護乙個映視表,建立token字串和使用者資訊的對應關係表,

例如,把token字串"daf32da456hfdh"和使用者id"5"對應起來。

(3) 當需要驗證使用者身份的操作時,必須要把token字串傳給伺服器驗證身份。

例如,api "test.com/user/update"是更新使用者的資訊,必須要驗證使用者的身份.

當呼叫api "test.com/user/update"時,把token字串"daf32da456hfdh"

放在url上,變成"test.com/user/update?token=daf32da456hfdh" .

當伺服器接收到這個api請求,知道要驗證使用者身份的,於是,就把引數中token的值"daf32da456hfdh"取出來,在(1)中建立的token字串和使用者資訊的對應關係表查詢,如果發現沒這個token值的,則返回驗證失敗的資訊。如果發現有這個token值,則獲取這個使用者的資訊,進行相關的更新操作。

(4) 當使用者退出登入時,需要通過呼叫api,讓伺服器把這個使用者對於的token字串刪除.

例如,api "test.com/user/logout"是退出登入的api,也要驗證使用者身份, 則呼叫"test.com/user/logout?token=daf32da456hfdh" 。當伺服器接到退出登入的api請求時,在(1)中建立的token字串和使用者資訊的對應關係表查詢token字串,把token和使用者資訊都刪除即可。

注意:這個方案並不是十分安全,這個身份驗證是依賴於token字串。如果使用者洩漏了自己的url, 那很大程度上token也被別人洩漏了,就相當於鑰匙被人複製了乙份。在下篇的通訊安全中,會描述乙個防止token在通訊中洩漏的方案。

restful風格介面設計方案:

<?php

/** * 資料操作類

*/class

request

return

false;

}//get 獲取資訊

private

static

function

getdata

($request_data)

else

}//post /class:新建乙個班

private

static

function

postdata

($request_data)

else

}//put /class/id:更新某個指定班的資訊(全部資訊)

private

static

function

putdata

($request_data)

$data = array();

if (!empty($request_data['name']) && isset($request_data['count'])) else

}//patch /class/id:更新某個指定班的資訊(部分資訊)

private

static

function

patchdata

($request_data)

if (!empty($request_data['name']))

if (isset($request_data['count']))

return

self::$test_class;

}//delete /class/id:刪除某個班

private

static

function

deletedata

($request_data)

unset(self::$test_class[$class_id]);

return

self::$test_class;

}}

1)本公司自己的介面

大體思路:小白使用者根據說明文件,呼叫封裝好的介面,也就是訪問自己的控制器,直接判斷返回json格式即可

2)別人請求自己介面,自己去別的介面呼叫資料返回小白使用者

大體思路:通過非同步請求,將資料取回轉義成自己公司的介面格式,返回給小白使用者。

html css書寫注意事項

css寫作注意事項 1.屬性寫在一行內,屬性之間,屬性名和值之間,以及屬性和 之間要儘量減少空格,去掉最後乙個 例如 p 2.書寫順序按照由外到內,由整體到細節書寫,大致分為5組 位置 position,left,right,float 盒模型屬性 display,margin,padding,wi...

HTML CSS書寫注意事項

html css書寫注意 1,指定標題,搜尋引擎對標題中的內容有偏愛 2,標籤語義化 3,減少div和span標籤的使用次數 4,排版布局要從上到下從左到右 5,靜態 製作一般分為 index.html 首頁 index.css 首頁樣式 public.css 公共樣式 reset.css 重置樣式...

SQL書寫注意事項

為避免慢sql,寫sql時多注意以下幾項 1.like 條件不以 開頭 2.where 條件中 等式左側不要出現函式 3.where條件盡量使用索引列 4.用具體的字段代替 select 5.盡可能使用join來代替子查詢 6.優化 limit 分頁 例如 limit 1000,20 這時mysql...