关系和超链接API
之前我们的API中的关系是使用主键表示的。在接下来,我们将通过使用超链接建立关系来提高API的内聚性和可发现性。
为API的根创建端点
- 现在我们有
snippets
和users
的端点,但我们的API没有单一的入口点。所以要创建一个 - 我们将使用基于函数的常规视图和我们之前介绍的装饰器
@api_view
- 在
snippets/views.py
文件中添加
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.reverse import reverse
@api_view(['GET'])
def api_root(request, format=None):
return Response({
'users': reverse('user-list', request=request, format=format),
'snippets': reverse('snippet-list', request=request, format=format)
})
注意:我们使用REST框架的reverse
函数来返回完全限定的URL
URL模式由URL的名称标识,我们将在后面声明snippets/urls.py
为代码高亮创建端点
- 我们之前一直没有写让代码高亮的端点,接下来我们为代码高亮创建端点
- 与其他API端点不同的是,我们不想使用
JSON
,而只是用HTML
来呈现 - REST框架提供了两种HTML呈现器样式,一种用于处理使用模板呈现的HTML,另一种用于处理预呈现的HTML
- 我们将使用第二种HTML呈现器
- 在创建代码高亮显示视图时,我们不返回对象实例,而是返回对象实例的属性
- 我们将使用基类来表示实例,而不是使用具体的通用视图,并创建
.get()
方法 - 在
snippets/views.py
文件中添加