In [1]:
import requests
import json
In [2]:
#res = requests.get("https://api.airtable.com/v0/appNcYtL8fFZa1STA/iris?api_key=keyshdNC8CZdj1xgo")
Base_ID = 'appNcYtL8fFZa1STA'
Table_name = 'iris'
# url格式: API URL/v版本/Base_ID/Table_Name
url = 'https://api.airtable.com/v0/{0}/{1}'.format(Base_ID, Table_name);
API_KEY = {'api_key': 'keyshdNC8CZdj1xgo'}
#Authorization格式: Bearer YOUR_API_KEY
Aut_cxt_header = {'Authorization': 'Bearer keyshdNC8CZdj1xgo', 'Content-type': 'application/json'}
Aut_header = {'Authorization': 'Bearer keyshdNC8CZdj1xgo'}
payload = {
"fields": {
"花萼長度": "9.9",
"花萼寬度": "9.9",
"花瓣長度": "9.9",
"花瓣寬度": "9.9",
"屬種": "new type"
}
}
In [3]:
url
Out[3]:
r = requests.get(url, params=API_KEY)
#query by record ID:
query_by_id_url = url +"/"+ "record_id"
r = requests.get(query_by_id_url, headers=(Aut_cxt_header))
#POST with form-encoded data
(不使用) r = requests.post(url, data=payload, headers=(Aut_cxt_header))
# POST with JSON import json
r = requests.post(url, data=json.dumps(payload), headers=(Aut_cxt_header))
query_by_id_url = url +"/"+ "record_id"
r = requests.patch(query_by_id_url, data=json.dumps(payload), headers=(Aut_cxt_header))
query_by_id_url = url +"/"+ "record_id"
r = requests.put(query_by_id_url, data=json.dumps(payload), headers=(Aut_cxt_header))
query_by_id_url = url +"/"+ "delete target record id"
r = requests.delete(query_by_id_url, headers=(Aut_header))
requests.post?
Signature: requests.post(url, data=None, json=None, **kwargs)
Docstring:
Sends a POST request.
:param url: URL for the new :class:`Request` object.
:param data: (optional) Dictionary (will be form-encoded), bytes, or file-like object to send in the body of the :class:`Request`.
:param json: (optional) json data to send in the body of the :class:`Request`.
:param \*\*kwargs: Optional arguments that ``request`` takes.
:return: :class:`Response <Response>` object
:rtype: requests.Response
File: c:\anaconda3\lib\site-packages\requests\api.py
Type: function
https://airtable.com/appNcYtL8fFZa1STA/api/docs#curl/errors:servererrorcodes
Pagination (關於分頁設定,pageSize預設100筆)
The server returns one page of records at a time. Each page will contain pageSize records, which is 100 by default.
offset (分頁的下一頁面第一筆記錄的ID)
If there are more records, the response will contain an offset. To fetch the next page of records, include offset in the next request's parameters.
In [4]:
query_string = {'api_key':'keyshdNC8CZdj1xgo', 'maxRecords':'100', 'pageSize':'2',
'filterByFormula':'{屬種} = "new type"'} #pageSize:一個頁面顯示(取回)幾筆資料
r = requests.get(url, params=query_string)
r.status_code
Out[4]:
In [5]:
r.text
Out[5]:
In [6]:
#查詢單筆資料
query_by_id_url = url +"/"+ "rec06Uv00gLHpXCsK" #url+record_id
r = requests.get(query_by_id_url, headers=(Aut_cxt_header)) #also,it's work that Authorization send by query string.
r.status_code
Out[6]:
In [7]:
query_by_id_url
Out[7]:
In [8]:
r.text
Out[8]:
In [9]:
r = requests.post(url, data=json.dumps(payload), headers=(Aut_cxt_header))
r.status_code
Out[9]:
In [10]:
r.text #剛才新增的記錄資料,會被 Return.
Out[10]:
In [11]:
query_by_id_url = url +"/"+ "recXX06GaZcWsjdxk" #url+record_id
r = requests.delete(query_by_id_url, headers=(Aut_header))
r.status_code
Out[11]:
In [12]:
query_by_id_url
Out[12]:
In [13]:
query_by_id_url = url +"/"+ "rec7FyUfaCBL944p7"
payload = {
"fields": {
"花萼長度": "11",
"花萼寬度": "11",
"花瓣長度": "11",
"花瓣寬度": "11",
"屬種": "new type"
}
}
r = requests.put(query_by_id_url, data=json.dumps(payload), headers=(Aut_cxt_header))
r.status_code
Out[13]:
In [14]:
r.text
Out[14]:
In [ ]: