[Python] REST API request vraag

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • ironheart
  • Registratie: September 2022
  • Laatst online: 12-06 14:14
Mijn vraag
Ik vermoed dat dit het juiste topic is dus hierbij mijn vraag;
Ik heb een REST API geformuleerd in Python welke met TransIP dient te kletsen en op die manier een nieuw DNS record aanmaakt. Voordat ik deze in productie zet wil ik graag weten of dit de correcte wijze en of jullie wellicht verbeteringen hebben.

Relevante software en hardware die ik gebruik
Ik heb de TransIP API documentatie erop nageslagen en alles lijkt me ok geformuleerd (nog niet getest).

Wat ik al gevonden of geprobeerd heb
Mijn code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import requests
import json

url = "https://api.transip.nl/v6/domains/DOMEIN/dns"  

payload = {
    "name": "subdomain1",
    "expire": "3600"
    "type": "A"
    "content":"92.92.92.92"
}

json_payload = json.dumps(payload)


headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer -----BEGIN PRIVATE KEY-----XXXXXXXXXXXXX-----END PRIVATE KEY-----"}

response = requests.post(url, data=json_payload, headers=headers)

if response.status_code == 200:
    print("POST request was successful.")
else:
    print("POST request failed with status code:", response.status_code)

print("Response:", response.text)

[ Voor 2% gewijzigd door RobIII op 10-06-2023 00:15 . Reden: Private key verwijderd ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 12-06 20:28

Hero of Time

Moderator LNX

There is only one Legend

Klinkt meer als een stukje softwareontwikkeling, dan een vraag over een client OS. Want Python kan je net zo goed op Windows en MacOS gebruiken en is derhalve niet specifiek een Linux iets.

LNX -> DEV.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • erwn
  • Registratie: November 2020
  • Niet online
@ironheart , als dat een echte key is in de authorisation header, zou ik 'm revoken en een nieuwe genereren.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
@ironheart Wat @erwn zegt: Die private key heet niet voor niets private key. Die hoor je voor jezelf te houden en is nu dus gecompromitteerd. Je zult een nieuw keypair moeten genereren en de huidige key revoken.

Verder zie ik geen problemen in je code; ik denk dat het handig(er) is als je een concrete vraag stelt over datgeen waar je twijfels over hebt. Ik ben geen python expert maar ik zie hier niets verkeerds en 't ziet er vrij logisch uit.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • +1 Henk 'm!

  • ironheart
  • Registratie: September 2022
  • Laatst online: 12-06 14:14
Ok, ik ga de code testen. Dank allemaal maar de private key was uiteraard niet de echte private key.

Acties:
  • 0 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 08:17
Volgens mij is je api aanroep naar Trasnip niet correct.
Jij gebruikt:
url = "https://api.transip.nl/v6/domains/DOMEIN/dns"
Volgens mij moet het zijn:
url = "https://api.transip.nl/v6/domains/"
Zie:
https://api.transip.nl/re...3391-674753614.1686383391

En de returncode is ook geen 200 maar 201 als het goed gaat.

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 08:43
Ben(V) schreef op zaterdag 10 juni 2023 @ 10:06:
Volgens mij is je api aanroep naar Trasnip niet correct.
Jij gebruikt:

[...]

Volgens mij moet het zijn:

[...]


Zie:
https://api.transip.nl/re...3391-674753614.1686383391

En de returncode is ook geen 200 maar 201 als het goed gaat.
Zijn oorspronkelijke URL is toch echt het endpoint voor toevoegen van een dns record:
https://api.transip.nl/re...86383391#domains-dns-post

Response is wel 201 idd. Ik zou 2.* als check op de responsecode gebruiken om te zien of het goed ging; dan dek je 200 en 204 ook (want wie weet is de documentatie brak :+)

[ Voor 11% gewijzigd door Merethil op 10-06-2023 10:56 ]


Acties:
  • 0 Henk 'm!

  • spone
  • Registratie: Mei 2002
  • Niet online
Het lijkt me trouwens wat onwaarschijnlijk dat je een private key als bearer token gebruikt.

De kans is groter dat je je private key moet gebruiken om een bearer token op te halen, en dat de token die je dan krijgt vervolgens in de authorization header geplaatst moet worden. Maar ik heb geen specifieke kennis van de TransIP API.

En in meer python-algemene zin: je kunt requests' raise_for_status() gebruiken om op statuscodes te checken. Dan hoef je niet iedere mogelijke statuscode af.

[ Voor 26% gewijzigd door spone op 10-06-2023 11:08 ]

i5-14600K | 32GB DDR5-6000 | RTX 5070 - MacBook Pro M1 Pro 14" 16/512


Acties:
  • 0 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 08:17
@Merethil
Als hij die toe wil voegen aan een bestaande domain ( in dit geval met de naam DOMEIN) heb je gelijk.

En het beste is gewoon response.ok te gebruiken, dan laat je het aan de requests module over.

@spone
Ja hij moet eerst via de auth call een bearer token aanvragen en die kan hij gebruiken en anders calls.

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 08:43
Ben(V) schreef op zaterdag 10 juni 2023 @ 11:12:
@Merethil
Als hij die toe wil voegen aan een bestaande domain ( in dit geval met de naam DOMEIN) heb je gelijk.
Dat is wel wat 'ie in zijn TS zei en waar de payload die hij als voorbeeld geeft van lijkt te zijn ;)
En het beste is gewoon response.ok te gebruiken, dan laat je het aan de requests module over.
Ah ja, klopt. Ik was even vergeten dat die erin zat; doe niet zoveel met requests in python 😬
Pagina: 1