E-posta ve parola ile bir kere alınan token, kullanım ömrü (expire_date) bitene kadar gönderilen tüm api isteklerinde kullanılabilmektedir.
Header
Api isteğinde token'ın gönderileceği header Authorization
ve değeri Token b61fd493d01cfb80d386171*****************
şeklinde olmalıdır.
Buna ek olarak, api veri alışverişi JSON tercih ediliyorsa 'Accept': 'application/json'
ve 'Content-Type': 'application/json'
da kullanılmalıdır.
Bu header'lar ile apinin cevabı JSON formatında dönmesi sağlanmış olacaktır.
Ancak bu noktada dikkat edilmesi gereken bir istisna olarak, bazı özel isteklerde (örneğin DELETE
isteğinde) cevap gövdesi (http response body) boş olabileceğinden,
cevabı JSON olarak parse ederken sunucudan alınan cevabın headerlarındaki Content-Type
kontrol edilmelidir.
Python
def call_api(token, method, endpoint, data=None):
# method: 'GET', 'POST', 'PATCH', 'PUT', 'DELETE' olabilir
# endpoint: Bir api endpointinin tam adresi olmalidir. Ornek: `https://api.propars.net/api/v1/core/sale/`
# donusleri json olarak yapmasi icin Accept header'i gerekli
# gonderdigimiz datanin sunucuda json olarak ele alinmasi icin Content-Type gerekli
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Token {}'.format(token)
}
data = json.dumps(data)
resp = requests.request(method, endpoint, data=data, headers=headers)
# NOT: Bu blok, eger alinan cevabin http kodu 400 den buyuk ise hata yukseltilmesini saglamaktadir.
# Fakat 400 hatalarinda resp.json() bulunmaktadir ve hata ile ilgili detaylari icerkmektedir.
# Bu nedenle gelistirilecek olan uygulamada 400 hatalarinin ayrica ele alinmasi dogru olacaktir.
if resp.status_code >= 400:
resp.raise_for_status()
# response icin header kontrolu yapilip Content-Type'a gore JSON parsing yapilir.
if resp.headers.get('Content-Type') == 'application/json':
return resp.json()
return resp.content
Php
function api_request($token, $endpoint, $method='GET', $data=null){
$crl = curl_init();
$headr = array();
$headr[] = 'Content-type: application/json';
$headr[] = 'Accept: application/json';
$headr[] = 'Authorization: Token '.$token;
curl_setopt($crl, CURLOPT_URL, $endpoint);
curl_setopt($crl, CURLOPT_HTTPHEADER, $headr);
curl_setopt($crl,CURLOPT_RETURNTRANSFER,1);
if(strtoupper($method) === 'POST'){
curl_setopt($crl, CURLOPT_POST,true);
curl_setopt($crl, CURLOPT_POSTFIELDS, json_encode($data));
}
$rest = curl_exec($crl);
$httpcode = curl_getinfo($crl, CURLINFO_HTTP_CODE);
curl_close($crl);
if($httpcode >= 400){
var_dump($rest);
die();
}
return json_decode($rest, true);
}