RESTful API 是什麼?

RESTful是一種互聯網應用程序的API設計理念:URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作。簡單的說:服務器上每一種資源,比如一個文件,一張圖片,一部電影,都有對應的url地址,如果我們的客戶端需要對服務器上的這個資源進行操作,就需要通過http協議執行相應的動作來操作它,比如進行獲取,更新,刪除等。

REST的原則:

(1)資源與URI

(2)統一資源接口

(3)資源的表述

(4)資源的鏈接

(5)狀態的轉移

本文基於Python開發,用httpbin模塊作爲測試服務器來講解

1.發送get請求

# -*- coding:utf-8 -*-

import pprint,requests

def main():
    response = requests.get(
        'http://127.0.0.1:5000/get',
        params={'foo':'bar'}
    )

    pprint.pprint(response.json())

if __name__ == '__main__':
    main()

執行後返回結果:

{'args': {'foo': 'bar'},
 'headers': {'Accept': '*/*',
             'Accept-Encoding': 'gzip, deflate',
             'Connection': 'keep-alive',
             'Host': '127.0.0.1:5000',
             'User-Agent': 'python-requests/2.18.4'},
 'origin': '127.0.0.1',
 'url': 'http://127.0.0.1:5000/get?foo=bar'}

2.發送post請求

# -*- coding:utf-8 -*-

import pprint,requests

def main():
    response = requests.post(
        'http://127.0.0.1:5000/post',
        params={'foo':'bar'}
    )

    pprint.pprint(response.json())

if __name__ == '__main__':
    main()

返回結果:


{'args': {},
 'data': '',
 'files': {},
 'form': {'foo': 'bar'},
 'headers': {'Accept': '*/*',
             'Accept-Encoding': 'gzip, deflate',
             'Connection': 'keep-alive',
             'Content-Length': '7',
             'Content-Type': 'application/x-www-form-urlencoded',
             'Host': '127.0.0.1:5000',
             'User-Agent': 'python-requests/2.18.4'},
 'json': None,
 'origin': '127.0.0.1',
 'url': 'http://127.0.0.1:5000/post'}

3.發送json格式的post請求

 

# -*- coding:utf-8 -*-

import pprint,requests,json

def main():
    # 需要指明Content-Type
    response = requests.post(
        'http://127.0.0.1:5000/post',
        json.dumps({'foo':'bar'}),
        headers={'Content-Type':'application/json'}
    )

    pprint.pprint(response.json())

if __name__ == '__main__':
    main()

執行結果:

{'args': {},
 'data': '{"foo": "bar"}',
 'files': {},
 'form': {},
 'headers': {'Accept': '*/*',
             'Accept-Encoding': 'gzip, deflate',
             'Connection': 'keep-alive',
             'Content-Length': '14',
             'Content-Type': 'application/json',
             'Host': '127.0.0.1:5000',
             'User-Agent': 'python-requests/2.18.4'},
 'json': {'foo': 'bar'},
 'origin': '127.0.0.1',
 'url': 'http://127.0.0.1:5000/post'}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章