python - Django Choice 领域 Web 服务最佳实践

标签 python django web-services rest restful-architecture

class Book(models.Model):

    CATEGORY = (
        (1, "Sci-Fi"),
        (2, "Romance"),
        (3, "Fantasy"),
        # more categories...
    )

    title = models.CharField(max_length=255)
    cat = models.IntegerField(choices=CATRGORY, null=True, blank=True)
    author = models.ManyTboManyField('User', related_name="book")

这是我的模型。我想要的是如何/应该发送响应数据,我的意思是格式。(JSON)

例如(对一本书的回应)

{"author": [1,3,4], "title": "my book", "cat": 1, 'bookid': 23 } 

{"author": [1,3,4], "title": "my book", "cat": "Sci-Fi", 'bookid': 23 }  #slugify name

第一种类型的问题是我必须在前端维护这个元组/映射(用于最终用户可视化)以及用于内部映射、api-DB 交互的 id。

从第二种类型,我不知道如果某些 api post/put 一些数据到我的系统,我将如何映射,我不知道这个类别属于哪个 id。

我需要像您这样在 Web 服务开发方面拥有丰富经验的人的建议,可以指导我以最佳方式开发 API,这可能对 future 的新手或学习东西的读者有所帮助。

最佳答案

我个人更希望两者都出现在 API 响应中,例如:

{"author": [1,3,4], "title": "my book", "cat_id": 1, "cat_name": "Sci-Fi"} 

原因是,仅 id 本身并不能传递有关类别的太多信息,并且名称在将来是可变的,因此单独使用也没有帮助。

当然,在两者都存在的情况下,我们可以在文档中指定 cat_name 用于装饰目的,而 cat_id 则保持不变。

关于python - Django Choice 领域 Web 服务最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32018147/

相关文章:

xml - 如何访问 upcdatabase.org API?

python - 从多个 git 开发分支测试 numpy python 库

python - 如何处理此错误 : __init__() got an unexpected keyword argument 'book_category'

python - Django + AWS : files not syncing to S3

python - 将模型关系指定为字符串与具体模型?

android - 如何在 Android 中解析复杂的 soap 对象

c# - WCF Web 服务客户端没有端点监听

python - 添加到ManyToMany Django;没有这样的列错误

Python3 的 super 和 comprehensions -> TypeError?

python - 列表理解或 map() 或 for 循环访问前一行来操作数组