Пирамида читать данные http
APIURL ='http://localhost:6543/api/patches/alice_8b84090712bce46e15a8107839cefe/e5678'
data = {
'patch_id' : 'e5678',
'queue_id' : 'alice_8b84090712bce46e15a8107839cefe',
}
response = requests.get(APIURL, data=data)
У меня есть код выше, чтобы проверить API REST карниз пирамиды.
Однако у меня возникают проблемы с чтением данных, введенных через data=data
параметр.
Это функция сервера для этой конечной точки:
@resource(collection_path='/api/patches', path="/api/patches/{queue_id}/{patch_id}")
class Patch(object):
def __init__(self, request):
self.request = request
def get(self):
"""
"""
queue_id = self.request.matchdict.get('queue_id', '')
patch_id = self.request.matchdict.get('patch_id', '')
data = {
'queue_id': 'e12525e1f90ad5e7395a965',
'patch_id': 'a9651a8259a666c0032f343',
'node_id': 'bef3a2adc76415b2be0f6942b5111f6c5e5b7002',
'message': 'This is a patch on feature2.',
'datetime': '.....',
}
#TODO call the patch method to get the public attributes
return {'error':{}, 'data': data}
1 ответ
Решение
Запросы игнорирует данные, представленные в data
параметр в качестве этого параметра используется для предоставления тела ответа (и GET
не имеет тела). Если вы в порядке с передачей аргументов строки запроса - это:
http://localhost:6543/api/patches?queue_id=12345&patch_id=910
тогда вы можете использовать params
ключевое слово аргумент вместо:
requests.get(APIURL, params=data)
В противном случае вы можете создать свой URL, используя urljoin
от urlparse
в стандартной библиотеке:
APIURL = "http://localhost:6543/api/patches"
with_queue = urljoin(APIURL, queue_id)
with_patch = urljoin(with_queue, patch_id)
response = requests.get(with_patch)