gpt4 book ai didi

web-services - REST API 设计 - 最佳实践 : Link existing child resource

转载 作者:可可西里 更新时间:2023-11-01 16:32:12 26 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

4年前关闭。




Improve this question




在设计 REST API 时,我了解如何添加(POST)、更新(PUTPATCH)等实体。但我想知道如何设计端点以将现有项目添加到现有资源?

下面是一个示例:假设我们有一个 API,其资源为 Course。和 Student和以下端点:

  • http://localhost/students - POST添加新学生
  • http://localhost/courses - POST添加新类(class)
  • http://localhost/courses/1 - PUT使用 ID 1
  • 更新类(class)
  • http://localhost/courses/1/students - GET列出 ID 为 1
  • 类(class)的所有学生
  • http://localhost/courses/1/students - POST将新学生添加到 ID 为 1
  • 的类(class)中

    问题是,我怎样才能 链接 一个 在校生现有类(class) ?澄清一下:对于“现有”,我指的是系统中已经存在但尚未链接的资源。

    我看到以下选项:
  • http://localhost/courses/1/students - PUT并在正文中发送学生 ID。使用的参数PUT将是我正在“更新”类(class)的学生资源。
  • http://localhost/courses/1/students - POST并在正文中发送学生 ID。使用原因POST是我在类(class)中“添加/创建”一个新资源。
  • http://localhost/courses/1/students/2 - PUT并在 URL 中发送 Id,在正文中不发送任何内容。
  • http://localhost/courses/1/students/2 - POST并在 URL 中发送 Id,在正文中不发送任何内容。
  • http://localhost/students/2 - PUTPOST并在正文中发送类(class) ID。
  • http://localhost/students/2/courses/ - PUTPOST并在正文中发送类(class) ID。
  • ...

  • 有最佳实践吗?有什么建议吗?是否应通过 courses 处理?或 students资源?两者都应该是可能的吗?此外,我不确定使用哪种方法( PUTPOST )?
    PUT 感觉有点奇怪或 POST body 里什么都没有。另一方面,如果正文中的所有内容都是一个 Id,为什么不把它放在 URL 中呢?

    最佳答案

    我认为关键在这里:

    http://localhost/courses/1/students - POST to add a new student to the course with Id 1



    鉴于您正在使用 POST关于这个 URL要将学生一般注册到类(class)中,无论学生是新学生还是现有学生都无关紧要。正如你所说,这可以是一个实现细节,比如发送现有学生的 ID在 body 里。

    关于web-services - REST API 设计 - 最佳实践 : Link existing child resource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45071511/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com