Python入門實戰--用Falcon框架開發REST API

jopen 9年前發布 | 65K 次閱讀 Falcon Python開發

 

公司項目急需一個簡單的API,沒有人做,正好前陣子看了遍Falcon的教程,所以就參考著做了下,做完的感覺是太簡單了,簡直簡單得讓人不敢相信。因為之前沒有任何服務端開發經驗,連基本的SQL語句都不太熟悉,但這次用falcon,python-mysqldb和gunicorn配合使用,居然很快就搭建起服務器,而且REST API也跑通了。雖然是個相當簡單的API,而且肯定會有大量沒意識到的問題存在,但還是把這一過程記錄下來,總結一下。

  1. 首先是各種安裝(我的電腦上之前就裝了MySQL,Ubuntu系統自帶Python)

    • $ pip install --upgrade [cython] falcon(如果加上cython好像比較快,沒有比較過)

    • $ pip install gunicorn(這個是后面運行服務器的,關于這個目前就知道這么多)

    • $ sudo apt-get install python-mysqldb(這個用來使用Python操作MySQL數據庫)

  2. 安裝完就可以開始干活了

    • 使用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所用到的所有技術了。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!