Python入門實戰--用Falcon框架開發REST API
公司項目急需一個簡單的API,沒有人做,正好前陣子看了遍Falcon的教程,所以就參考著做了下,做完的感覺是太簡單了,簡直簡單得讓人不敢相信。因為之前沒有任何服務端開發經驗,連基本的SQL語句都不太熟悉,但這次用falcon,python-mysqldb和gunicorn配合使用,居然很快就搭建起服務器,而且REST API也跑通了。雖然是個相當簡單的API,而且肯定會有大量沒意識到的問題存在,但還是把這一過程記錄下來,總結一下。
-
首先是各種安裝(我的電腦上之前就裝了MySQL,Ubuntu系統自帶Python)
-
$ pip install --upgrade [cython] falcon(如果加上cython好像比較快,沒有比較過)
-
$ pip install gunicorn(這個是后面運行服務器的,關于這個目前就知道這么多)
-
$ sudo apt-get install python-mysqldb(這個用來使用Python操作MySQL數據庫)
-
-
安裝完就可以開始干活了
-
使用falcon開發API
-
使用gunicorn運行服務器
-
使用mysqldb操作數據庫
-
falcon使用起來感覺非常簡單,當然也有可能是因為沒有深入去了解的原因。只要導入falcon模塊,剩下的幾乎就是純邏輯代碼的編寫了。因為之前嘗試過PHP+Apache,光各種配置文件簡直就是噩夢般的存在,使用falcon的時候甚至感覺不到是在做服務器API開發,展示一段代碼吧,自己敲的,可以運行:
import falcon class Test(object): def on_get(self, req, resp): resp.body = '{"message": "Hello world!"}' resp.status = falcon.HTTP_200
就是這么簡單!你已經實現了一個可以響應get請求的類了,同樣的post請求只要寫成on_post就行了,是不是簡單到不敢相信?先將上面的代碼保存為test.py,接下來,繼續編寫代碼,然后試著運行,就能讓你的服務器真正的跑起來了。再寫個app.py,內容如下:
import falcon import test api = application = falcon.API() test = test.Test() # 添加路由控制 api.add_route('/test', test)
還是那么簡單,現在這兩個.py文件在同一個目錄下,打開終端到當前目錄下運行以下命令:
$ gunicorn [-b 127.0.0.1:8000] app
現在你可以去瀏覽器打開127.0.0.1:8000/test了,會出現{"message": "Hello world"},你的服務器已經跑起來了,是不是感覺很棒!這差不多就是用falcon開發API所要做的所有事情了(至少我目前為止只用到了這些, -b參數可以綁定ip和端口號,默認就是127.0.0.1:8000)。
接下來的這段代碼是使用mysqldb連操作數據庫的,依舊很簡單:
import MySQLdb class DBTest(object): def test(self): try: conn = MySQLdb.connect(host='host',user='user',passwd='psw',port=3306) cur = conn.cursor() cur.execute('create database if not exists test') conn.select_db('test') cur.execute('create table test(id int, title varchar(20))') except MySQLdb.Error, e: print "Error >>> " + str(e)
以上,幾乎就是這次做這個簡單的API所用到的所有技術了。