Python中使用py调用RESTful API过程中遇到的一些问题

大家好,py 新手一个. 因工作需要,最近在用 py 的 requests 去调用一个系统的 restful api,写的过程中有些小疑问.同时也深感自己 py 功力的不足. 希望路过的大佬能就下面的问题,例子指点下 .多多包涵, 谢谢!

  1. 像 TestA 下 create 方法中的 data 参数, 目前指定了几个参数. 但是个人考虑到将来可能需要操作到其他参数, 打算先定义好一个 dict, 里面包括所有官方参数及对应默认值(平均 20-30 个参数吧).如果用户有输入某个指定参数,则有**kwargs 接收该参数,然后更新这个 dict. 然后不用 data. 请问各位大佬这样写好吗?或者有什么好的建议呢??

  2. 对于这个调用的 py, 个人思路是写一个通用的父类方法, 然后子类去继承. 再根据不同对象,更新不同的参数, 最后直接调用该子类即可.但是发现好像老是在重复写一些东西, 感觉不简洁, 很笨.麻烦大佬就下面的代码指点下, 应该从哪些方面来优化下. 或者说下小弟的不足之处, 指点下学习的方向.

附简易代码 (命名临时随便写的) :

# 通用方法

class Base(object):
def read(self, module_name, data, object_name=None, key_name=None):
     url = self.generate_addr(module_name, object_name, key_name)
     res = self.session.get(url)
     return res

def create(self, module_name, data, object_name=None, key_name=None):
     url = self.generate_addr(module_name, object_name, key_name)
     res = self.session.post(url, data=data)
     return res

# 具体对象

class TestA(Base):
def __init__(self, address, **kwargs):
    super(TestA, self).__init__(address, **kwargs)
    self.test_module = 'test'

def read(self, **kwargs): 
    url = self.generate_addr(self.test_module, **kwargs)
    res = self.session.get(url)
    return res

def create(self, data, **kwargs):
    # 用于生成系统所需的数据
    def create_data(data):
        def data_one():
            payload = {'b':'2'}
            payload['a'] = data['1']
            return {'module_name':self.test_module, 'payload':payload, 'key_index':None}
        def data_two():
            module_name = 'another_test'
            payload = {}
            payload['a1'] = data['1']
            key_index = 1 
            return {'module_name':module_name, 'payload':payload, 'key_index':key_index}
        return data_one(), data_two()

    items = create_data(data)
    # 此处有想过用列表生成式, 但感觉不好写
    res_dict = []
    for item in items:
        url = self.generate_addr(item['module_name'],key_name=item['key_index'])
        res = self.session.post(url, data=item['payload'])
        res_dict.append(res)
    return res_dict


Python中使用py调用RESTful API过程中遇到的一些问题

2 回复

我无法理解你的问题


回到顶部