2 votes

Requête Get du client API Django avec charge utile

Je cherche à savoir si cela est possible. Si j'envoie une requête get avec body dans postman, je reçois des résultats correspondant à ce dont j'ai besoin.

Peut-on envoyer une requête get avec un corps en utilisant l'APIClient ?

Voici mon code ;

def setUp(self):
        self.client = APIClient()
        HistoryLog.objects.create(username='User1', log_time='2020-05-05', logon_time='08:00', logout_time='09:00')
        HistoryLog.objects.create(username='User2', log_time='2020-05-05', logon_time='08:30', logout_time='10:00')
        HistoryLog.objects.create(username='User3', log_time='2020-05-08', logon_time='08:40', logout_time='11:00')
        HistoryLog.objects.create(username='User4', log_time='2020-05-10', logon_time='08:50', logout_time='12:00')

def test_get_data(self):

        payload = {'date': '2020-05-05', 'start_time': '06:00', 'end_time': '12:00'}

        res = self.client.get(HISTORY_URL, payload)

        self.assertEqual(res.status_code, status.HTTP_200_OK) -- this passes.
        self.assertEqual(len(res.data), 2) -- this always come back that res.data is zero

0voto

C'est un peu compliqué, mais ça semble fonctionner :

def test_get_data(self):
    payload = {'date': '2020-05-05', 'start_time': '06:00', 'end_time': '12:00'}
    data, content_type = self.client._encode_data(payload, 'json')
    res = self.client.generic('get', HISTORY_URL, data, content_type)
    ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X