HTTP動詞(PATCH/POST)を関数に渡して、その動詞をPythonリクエストに動的に使用する方法はありますか?Pythonリクエスト - 動的にHTTP動詞を渡す
たとえば、この関数は、内部でのみ呼び出され、= post/patchのどちらかになる 'verb'変数を使用します。
def dnsChange(self, zID, verb):
for record in config.NEW_DNS:
### LINE BELOW IS ALL THAT MATTERS TO THIS QUESTION
json = requests.verb(headers=self.auth, url=self.API + '/zones/' + str(zID) + '/dns_records', data={"type":record[0], "name":record[1], "content":record[2]})
key = record[0] + "record with host " + record[1]
result = json.loads(json.text)
self.apiSuccess(result,key,value)
私はリクエストできないことを認識しています。上記のように、「バー」は質問を説明するためのものです。これを行う方法やそれに類するものはありますか?私は避けたい:
if verb == 'post':
json = requests.post(headers=self.auth, url=self.API + '/zones/' + str(zID) + '/dns_records', data={"type":record[0], "name":record[1], "content":record[2]}
else:
json = requests.patch(headers=self.auth, url=self.API + '/zones/' + str(zID) + '/dns_records', data={"type":record[0], "name":record[1], "content":record[2]}
おかげでみんな!
感謝を。主に悪いgetattr(object、name [、default]) objectの名前付き属性の値を返します。nameは文字列でなければなりません。文字列がオブジェクトの属性の名前であれば、結果はその属性の値になります。たとえば、getattr(x、 'foobar')はx.foobarと等価です。指定された属性が存在しない場合は、指定されていればdefaultが返され、それ以外の場合はAttributeErrorが返されます。 – HectorOfTroy407
あなたの解決策は動作しますが、 'getattr()'に依存するのは一般的には醜いと見なされます。私は、あなたが私の解決策を見ることを提案します。これは、 '要求' libが使われるはずの方法であるためです。 – Guillaume
@Guillaumeええ、あなたに同意します。基本的なライブラリに関係なく答えを書いたので、 'request'のような一般的なメソッドを実装していないライブラリに対して動作するものとして書かれています。私はなぜこれをもたらすために1年以上待っているのだろうかと思います。 – metatoaster