講完 get
來講 post
,那這兩個 call api 的方法有什麼差別呢?先記得一個原則,要傳遞機密的資料用 post
,如果要傳遞的參數被別人知道也無所謂就用 get
post
是傳遞資料到後台,資料不會顯示在 url 上,get
是傳遞參數到後台,參數會直接顯示在 url 上和後端的終端上,像這樣
app/function1?param1='hey'
像是做登入或者修改密碼功能就會用 post
,在終端上會顯示像這樣
api/login
完全沒有暴露你的帳號密碼
你如果是用 get
做登入功能就會像這樣
api/login?account=myAccount&password=myPassword
真的是人家想不想駭你而已,那接下來來講前後端要怎麼寫吧!
我們以一個登入功能來舉例,在 views.py
裡先新增一支 api,接下來的四個篇章就會講完整的驗證功能囉!這裡先簡單說明 post
class Login(ObtainAuthToken):
def post(self, request, *args, **kwargs):
data = request.data
acc = data.get('username')
pw = data.get('password')
...
其實我也只有在驗證相關的功能有在用 post
,可能還有更簡單的例子
總之就是要用 request.data
獲得從前端傳來的資料,用 request.data.get('username')
獲得有一個 key 叫做 'username' 資料
前端這邊,method
選擇使用 post
,用 data
傳遞資料到後台
const login=()=>{
axios({
method: 'post',
url:'localhost:8000/api/login/',
data: {
username: 'username',
password: 'password'
},
})
}
接下來要講 JWT 以及驗證,是我最想寫的幾個篇章之一,請大家敬請期待