網址附贈:
https://www.codementor.io/sagaragarwal94/building-a-basic-restful-api-in-python-58k02xsiq
https://stackoverflow.com/questions/40586744/django-rest-authentication-from-desktop-app
http://www.sqlitetutorial.net/sqlite-sample-database/
本來是利用上面三個網址來在本地端練習
但不知道為什麼找不到本地端,全卡
加上跟小學弟發牢騷,他又說都給你機器了,阿REST API就是你在雲端上寫一個django接收
然後終端那邊看設在哪都好
以往我卡的點(也有可能是大家卡的點)
我現在在我的桌機裡有一個我開發的程式,裡面有一張表單是要大家輸入他的姓名/性別/出生年月/信箱/意見這樣的話,我應該要再開發程式裡寫好當我按下「送出」鍵的時候,我同時要上傳資料回資料庫
也就是說,我應該要在程式裡寫好指令/動作是蒐集輸入的資訊,然後指定要回傳哪個雲端的資料庫
OK, 到這邏輯都還通的
可是當我將雲端的mysql/phpmyadmin全部架好後
我發現會有權限的問題
於是我卡的點在於
我現在要在不同的電腦給不同的人輸入他的資訊然後送出後他會回傳到我的雲端資料庫
可是當他回傳的時候,得先接我的資料庫
這步驟立馬被擋下來,應該他沒有被我的資料庫授權可進入/可傳送
也就是說,我應該要讓他有權限回傳資料
可是,我要給一堆人輸入我的表單再回傳,我總不可能讓每個人的ip都能進我的資料庫
這樣所有人都能進我的資料庫,變成所有人都能對我的資料庫做更改/刪除
在這個問題約莫卡了快一週(斷斷續續一週)
我就快抓狂,然後再度向小學弟發牢騷
之後小學弟跟我說REST API
這項技術之前我們老師就常常再提(但因為覺得跟我無關,所以我就耳朵蓋起來)
然後看了一下什麼3 tier,非常的麻煩,姑且擺在一邊
我可以直接用pymsql 寫 連db,我幹嘛還需要寫這個3tier XD
但後來,問了指導老師後
才發現自己的做法被上一個開發這個程式的學弟誤導
意思是說上個學弟應該也是沒有問人,自己開發,自己找
然後用了最笨的方法+上他覺得不用負責的態度,所以硬是寫了很不方便但免強還能使用程式的方法
最不人性化+沒有達到100%功能
但因為我自己也是懶惰沒有去研究跟詢問,硬是覺得我應該看懂人家的code,然後自己改一版就好
於是陷入了整個死胡同
但現在好的是,找到方法+上因為這樣有凹到一台虛擬機XD
所以,找到方法後,就可以進行開發了
至於卡死跟鬼打牆的點
REST API其實就是利用django跟python的套件在網路上建立可以做接收/修改/刪除的行為(requests)
然後在雲端上寫好一個可作為接收端,至於發出端/終端,在哪邊/哪個裝置寫都可以
利用GET/POST或者上傳檔案的方式,將本來要收集跟上傳的資料藉由djagno往雲端送
至於寫這篇,其實也是想提醒自己
拿到了一個機器,裝好了所有環境卻完全忘了怎麼run機器XD
只好把這篇叫出來
然後用linux語法
sudo python manage.py runserver 0.0.0.0:80
這是自己測試的時候使用的指令,跑一次,有錯就終止,然後更改後再跑
這個不會讓網頁掛著好好的,但是做測試用
阿剛剛在run的時候我沒有輸入0.0.0.0:80
所以不管是輸入127.0.0.1(localhost)還是輸入我的ip都沒反應
做測試的時候可以將port號改成別的,當然如果你port號改掉
假設你輸入這樣
sudo python manage.py runserver 0.0.0.0:9912
那麼在url就要輸入
ip:9912
然後到你的網頁
ip:9912/test/
類似這樣
9912是我喜歡一個怪咖數字,因為小學弟都用8000
至於後面/test/去哪邊看
請到你的資料夾裡的url.py裡面看
url.py是定義url跟requests(傳到view處理)的地方
有寫動作(requests),有需要串url就要去url.py裡面寫
有需要使用到url跟串動作(requests),都要在url.py寫(在鬼打牆什麼)
寫完動作後,記得去view.py裡定義動作唷!
另外一個是,不理會任何錯誤讓網頁一直掛著
sudo nohup python manage.py runserver 0.0.0.0:80 &
一樣(我不知道&要不要加)XD
一定要sudo(用權限開)
接著如果跑很多次,或者重新跑都遇到port被佔
就用這個查詢所有的連線
ps -ef | grep runserver
然後使用
sudo kill pid
殺掉想連的port號或者連線
pid就是終端機會秀出那個連線的id,輸入那個id就會殺掉那個連線喲!
最後,筆記一下
如果使用內建django的admin後台
要創立superuser,不然無法進入
使用指令,可以創立superuser
python manage.py createsuperuser
接著在網址後面打上
/admin
像是這樣
ip:port/admin
就可以進入後台畫面(請確定有沒有將後台都import,像是view, setting…之類的)
打入剛剛在終端機輸入的帳號密碼,就能進入後台了~