[PYTHON] Ich habe versucht, den DRF-API-Anforderungsverlauf mit django-request zu speichern

Dies ist eine Geschichte über die Verwendung von django-request in DRF.

Was du tun kannst

Dinge unmöglich

--Historie des Inhalts des Anforderungshauptteils, z. B. POST-Parameter ――Da es auch einen Sicherheitsaspekt gibt, ist das Speichern von POST-Parametern riskant, nicht wahr?

Verfahren

1 Mit Pip usw. installieren.

pip install django-request

2 Fügen Sie request zu INSTALLED_APPS hinzu

3 Fügen Sie request.middleware.RequestMiddleware zu MIDDLEWARE hinzu

4 Ausführung der Migration

manage.py migrate

Die API-Anforderung wird jetzt in der Tabelle "request_request" gespeichert.

Anpassen

Ausschlusspfad

Sogar die Anfrage von django-admin wird gespeichert, daher denke ich, dass es besser ist, sie auszuschließen Ich habe es so gemacht (Gesundheit ist ein Pass für Gesundheitscheck)

REQUEST_IGNORE_PATHS = (
    r'^admin/', r'^docs/', r'^health$', r'\.ico$', r'^static/'
)

Informationen zur IP-Adresse

Da die IP-Adresse "REMOTE_ADDR" verwendet, kann sie bei einem Load Balancer nicht korrekt abgerufen werden. Ich habe es mit einem bittersüßen Maß so gemacht (Bitte sag mir, ob es einen besseren Weg gibt)

from request.middleware import RequestMiddleware

class XRequestMiddleware(RequestMiddleware):
    def process_response(self, request, response):
        # django-FERNBEDIENUNG auf Anfrage_Ich habe ADDR als IP gespeichert und bin daher zu HTTP gezwungen_X_FORWARDED_Wechseln Sie zu FOR
        http_x_forwarded_for_ip = request.META.get('HTTP_X_FORWARDED_FOR')
        remote_addr_ip = request.META.get('REMOTE_ADDR')
        if http_x_forwarded_for_ip:
            request.META['REMOTE_ADDR'] = http_x_forwarded_for_ip

        response = super().process_response(request, response)

        if http_x_forwarded_for_ip:
            request.META['REMOTE_ADDR'] = remote_addr_ip

        return response

Übrigens können in "HTTP_X_FORWARDED_FOR" IP-Adressen durch Kommas getrennt eingegeben werden. Wenn Sie also "REQUEST_IGNORE_IP" verwenden, sollten Sie wie folgt vorgehen.

http_x_forwarded_for_ip = request.META.get('HTTP_X_FORWARDED_FOR').split(',')[0]

Impressionen

Es ist einfach zu integrieren und für datengesteuerte Geräte unerlässlich. Ein weiteres Problem ist das Sichern, wenn Daten gesammelt werden. Ich möchte jedoch, dass Sie die IP-Adresse aktualisieren ...

Recommended Posts

Ich habe versucht, den DRF-API-Anforderungsverlauf mit django-request zu speichern
Ich habe versucht, die API mit dem Python-Client von echonest zu erreichen
Ich habe die Naro-Roman-API 2 ausprobiert
Ich habe die neuartige API von Naruro ausprobiert
Ich habe versucht, die checkio-API zu verwenden
Ich habe versucht, die COTOHA-API zu berühren
Ich habe versucht, mit Pillow mit dem Bild zu spielen
Ich habe versucht, die BigQuery-Speicher-API zu verwenden
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
Ich habe versucht, die Qiita-API von Anfang an zu aktivieren
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, die Google Cloud Vision-API zu verwenden
Ich habe versucht, das Bild mit Python + OpenCV zu "binarisieren"
Ich habe "Receipt OCR" mit der Google Vision API ausprobiert
Ich habe versucht, mit tkinter mit dem Taschenrechner zu spielen
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, unsere Dunkelheit mit der Chatwork-API aufzudecken
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich habe versucht, die Emotionen des gesamten Romans "Wetterkind" zu analysieren
[Erste COTOHA-API] Ich habe versucht, die alte Geschichte zusammenzufassen
Ich habe versucht, zum Zeitpunkt der Bereitstellung mit Fabric und ChatWork Api automatisch in ChatWork zu posten
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Ich habe versucht, die Zugverspätungsinformationen mit LINE Notify zu benachrichtigen
Ich habe versucht, mit Elasticsearch Ranking zu lernen!
Ich habe versucht, mich mit Spring Boot + Spring Security REST API anzumelden
Ich habe versucht, mit PyCaret zu clustern
Ich habe versucht, Follow Management mit Twitter API und Python (einfach)
Ich habe versucht, die Windows 10-Festplatte durch eine kleinere SSD zu ersetzen
Ich habe versucht, die Qiita-API zu berühren
Ich habe die Changefinder-Bibliothek ausprobiert!
Ich habe versucht, die API-Bibliothek NAPALM für Router-Steuerungen mehrerer Hersteller zu berühren
[Python] Ich habe versucht, Daten mit der API von Wikipedia zu sammeln
Ich habe die Google Cloud Vision-API zum ersten Mal ausprobiert
Rufen Sie die API mit python3 auf.
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
Ich habe versucht, verschiedene Informationen von der Codeforces-API abzurufen
[Für Anfänger] Ich habe versucht, die Tensorflow-Objekterkennungs-API zu verwenden
Ich habe versucht, die Sprecheridentifikation mithilfe der Sprechererkennungs-API von Azure Cognitive Services mit Python zu überprüfen. # 1
Ich habe versucht, die Google-API mit Ruby und Python zu erreichen. Machen Sie die Datenbank zu einer Tabelle und verwalten Sie sie mit Google Drive
Ich habe versucht, die Sprecheridentifikation mithilfe der Sprechererkennungs-API von Azure Cognitive Services in Python zu überprüfen. # 2
Ich habe versucht, das Ranking des Qiita-Adventskalenders mit Python zu kratzen
[AWS / Tello] Ich habe versucht, die Drohne mit meiner Stimme Part2 zu bedienen
Ich habe versucht, den Datenverkehr mit WebSocket in Echtzeit zu beschreiben
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich habe eine Kreuzvalidierung basierend auf dem Rastersuchergebnis mit scikit-learn versucht