我试图保存apis的回复详情(通常没有记录)。
api可能会随着时间的推移而改变,我会定期向他们请求数据,这些数据通常可能没有变化。
因此,我只想在更改时保存响应,并在上次使用api检查响应时添加时间戳。
我确实开始通过Django ORM进行建模,但我很可能会因为试图规范数据而过于复杂。
请求可以像往常一样,简单的GET请求,带查询的GET或带数据的POST。 响应应该是url(方案,主机名和路径),查询或有效负载的唯一,但我不知道如何最好地建模。我觉得响应JSON或文本与响应有很多关系。但是我觉得必须有一个更简单的方法,因为我刚刚开始不想复制超过必要的存储响应,如上所述。
class Request(models.Model):
scheme = models.CharField(max_length=10)
hostname = models.TextField()
path = models.TextField(null=True)
method = models.CharField(max_length=10)
headers = models.TextField()
class Meta:
unique_together = ('scheme', 'hostname', 'path', 'method')
def __str__(self):
return self.url
class RequestQuery(models.Model):
request = models.ForeignKey(Request)
query = models.TextField()
def __str__(self):
return self.query
class RequestPayload(models.Model):
request = models.ForeignKey(Request)
payload = models.TextField()
def __str__(self):
return self.payload
class Response(models.Model):
request = models.ForeignKey(Request)
query = models.ForeignKey(RequestQuery, null=True)
payload = models.ForeignKey(RequestPayload, null=True)
headers = models.TextField()
status_code = models.IntegerField()
json = JSONField(null=True) # stores in either json or text depending on if valid json
text = models.TextField(null=True)
class Meta:
unique_together = ('request', 'status_code')
def _str_(self):
return str(self.request.url) + str(self.status_code)
class ResponseHistory(models.Model):
time_stamp = models.DateTimeField(auto_now_add=True)
response = models.ForeignKey(Response)
def __str__(self):
return self.time_stamp