2016-06-23 23 views
6

API'ler için belirteç tabanlı kimlik doğrulaması kullanan ve Python 3 komut dosyası aracılığıyla kayıtları güncelleştirebilmeniz gereken bir Rails 4 uygulamasına sahibim.Başlıklar ile bir PATCH isteği göndermek için istek nasıl kullanılır?

Benim şu anki komut API kimlik doğrulamasını devre dışı olsa sorun çalışan bu

import requests 
import json 

url = 'http://0.0.0.0:3000/api/v1/update_experiment.json' 
payload = {'expt_name' : 'A60E001', 'status' : 'done' } 

r = requests.patch(url, payload) 

benziyor.

Başlıkları nasıl ekleyeceğimi anlayamıyorum, requests.patch yalnızca dokümanlar için iki parametre alır. Aşağıdaki başlık bilgisi

'Authorization:Token token="xxxxxxxxxxxxxxxxxxxxxx"' 

başlığının Bu tip kıvrımı Tamam çalışır eklendi nerede

Ben noktaya gelmek gerekir. Bunu Python 3'te nasıl yapabilirim?

def patch(url, data=None, **kwargs): 
    """Sends a PATCH request. 

    :param url: URL for the new :class:`Request` object. 
    :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`. 
    :param \*\*kwargs: Optional arguments that ``request`` takes. 
    :return: :class:`Response <Response>` object 
    :rtype: requests.Response 
    """ 

    return request('patch', url, data=data, **kwargs) 

Sosomething gibi:

+0

aslında Öyle mi * 'başlıklar =' ekleyerek * deneyin? Ne oldu? – jonrsharpe

+0

Başlıklar = {'Yetkilendirme': 'Token', 'belirteci': 'xxxxxx'} ' gibi bir şeyden yoruldum, sonra' r = requests.patch (url, veri yükü, başlıklar = başlıklar) 'dır, ancak hiçbir şey olmuyor, hata yok Python'da, Rails tarafında WebRick'ten tepki yok. Ne olduğunu görmek için günlüklerle oynamayı deniyorum. –

cevap

5

patch, sadece başlıklar = {your_header} geçmesi kwargs alır

head = {"Authorization":"Token token=xxxxxxxxxxxxxxxxxxxxxx"} 
url = 'http://0.0.0.0:3000/api/v1/update_experiment.json' 
payload = {'expt_name' : 'A60E001', 'status' : 'done' } 

r = requests.patch(url, payload, headers=head) 
+0

Merhaba. Başlıklarını denedim = {'Yetkilendirme': 'Token', 'token': 'xxxxxx'} '' 'r = requests.patch (url, veri yükü, başlıklar = başlıklar)' fakat Raylar bundan hoşlanmıyor. Kimlik doğrulama başarısız. Python'un aslında ne yolladığını, başlığın nasıl denetlendiğini nasıl görebilirim. Print (r.headers) 'yi bağladım ama bu başlık olarak girdiğim herhangi bir bilgiyi içermiyor. –

+0

@BartC, bu, başlıkların biçimi değil, son kod snippet'ini yeniden okuduğunu unutmayın. – jonrsharpe

+1

@PadraicCunningham Muazzam teşekkürler !!!!, bu harika çalıştı, bu ayrıntıyı kaçırdı/sadece işe yaramaya yönelik diğer girişimlerimin çoğunda suçlu olanı alamadım. Tekrar teşekkürler. –

İlgili konular