本节开始,最近篇章都应该是设计接口库的功能,让我们先从设计接口列表下手:
开发一个接口列表,用到的设计思路 和之前的项目列表类似:
首先来设计这个接口表:
一个接口实体应该具有哪些字段呢?
1. id ,自动生成无需在意
2.project_id ,所属的项目id
3.name , 接口名字
4.api_method ,请求方式
5.api_url , 请求url
6.api_header ,请求头
7.api_login ,是否需要带登陆状态
8.api_host , 域名
9.des, 描述
10.body_method , 请求体编码格式
11.api_body, 请求体
12.result , 结果-返回体
13.sign , 是否需要启动自定义算法加密
14.file_key ,带文件的文件key
15.file_name , 带文件的文件名
16.public_header , 项目的全局变量-公共请求头
这里我们先把所有可能用到的字段都列举出来了。怎么样,发送一个请求是不是比我们看到的要复杂多了?
注意,各种长度要尽量符合实际情况,比如url,有些接口甚至达到上千字符
而header则可能更长。但是这里的设置最大长度只会限定住后台admin 中你手动输入的情况。实际中我们在后台代码通过orm则可以无限制存储。
好的,打开models.py:
写好如下表设置:
懒人代码:
class DB_apis(models.Model):
project_id = models.CharField(max_length=10,null=True) #项目id
name = models.CharField(max_length=100,null=True) #接口名字
api_method = models.CharField(max_length=10,null=True) #请求方式
api_url = models.CharField(max_length=1000,null=True) #url
api_header = models.CharField(max_length=1000,null=True) #请求头
api_login = models.CharField(max_length=10,null=True) #是否带登陆态
api_host = models.CharField(max_length=100,null=True) #域名
des = models.CharField(max_length=100,null=True) #描述
body_method = models.CharField(max_length=20,null=True) #请求体编码格式
api_body = models.CharField(max_length=1000,null=True) #请求体
result = models.TextField(null=True) #返回体 因为长度巨大,所以用大文本方式存储
sign = models.CharField(max_length=10,null=True) #是否验签
file_key = models.CharField(max_length=50,null=True) #文件key
file_name = models.CharField(max_length=50,null=True) #文件名
public_header = models.CharField(max_length=1000,null=True) #全局变量-请求头
def __str__(self):
return self.name
然后同步数据库:
然后admin.py中注册:
然后我们去后台创建1条接口记录,以便我们之后前端列表的展示调试。
注意这里我们必须填入所有字段才能保存成功。仅展示用,所以大家无需填入真正规则的数据。
然后我们开始更新views.py中的child_json(),要增加几句代码,用来从数据库接口表中取数据传递给前端页面:
其中获取数据库的接口,要过滤,必须是项目id正确的 才会要。
给前端的这个res json串,中的apis 就可以让前端直接使用了,
打开P_apis.html,学着之前项目列表的前端代码,创建接口列表:
大家可直接复制代码:(建议能自己敲下来的自己敲,完全懂的才可以复制粘贴)
<br><br>
<table class="table table-striped">
<thead>
<tr>
<th>id</th> <th style="width: 50%">接口名称</th> <th style="width: 30%">url</th> <th>操作</th>
</tr>
</thead>
<tbody>
{% for i in apis %}
<tr>
<td>{{ i.id }}</td><td>{{ i.name }}</td> <td>{{ i.api_url }}</td> <td>
<button onclick="" class="btn btn-success">调试</button> <button onclick="" class="btn btn-danger">删除</button></td>
</tr>
{% endfor %}
</tbody>
</table>
看看效果:
好了,本节就说到这里了,下节课我们继续开发这个接口列表