Django Choice领域的Web服务最佳实践

时间:2015-08-14 20:27:29

标签: 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

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

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

我需要像你这样拥有丰富网络服务开发经验的人的建议,并指导我以最佳方式开发API,这对未来的新手或学习用户有所帮助。

1 个答案:

答案 0 :(得分:2)

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

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

原因是,只是id并没有自己提供关于类别的大量信息,而且名称在未来是可变的,所以单凭这两者都没有帮助。

当然,对于两者,我们可以在文档中指定cat_name用于美容目的,而cat_id是保持相同的。