Retrieving a collection of IDs instead of the full representation of a resource in REST

后端 未结 2 896
南旧
南旧 2021-01-19 01:17

I\'m designing a REST API for the first time, so I have what I consider a quite basic question about its design.

I would like the files collection to return an ID (o

相关标签:
2条回答
  • 2021-01-19 02:07

    Just do it.

    I would call it a standard RESTful API design pattern to have an abbreviated resource representation in your collections resource and the full representation only on your entity resource.

    So /files would return something like:

    [
      {
        name: "foo",
        url: "example.org/files/3321"
      },
      {
        name: "bar",
        url: "example.org/files/3192910"
      }
    ]
    

    While /files/3321 returns the full file representation

    {
      name: "foo",
      self: "example.org/files/3321"
      encoding: "UTF-8",
      type: "xml-document"
    }
    
    0 讨论(0)
  • 2021-01-19 02:10

    Custom media type

    You could have a custom media type for the full representation of the resource and a custom media type for the identifiers of the files.

    For example, you could use one of the following (or both) media types to retrieve a full representation of a collection of files:

    GET /api/files HTTP/1.1
    Host: example.com
    Accept: application/json
    
    GET /api/files HTTP/1.1
    Host: example.com
    Accept: application/vnd.company+json
    

    And the following media type to retrieve only the identifiers of the files:

    GET /api/files HTTP/1.1
    Host: example.com
    Accept: application/vnd.company.id+json
    

    Query string parameter

    Alternatively, you could support selecting the fields to be retrieved with a query string parameter.

    Use the following to retrieve the full representation of a collection of files:

    GET /api/files HTTP/1.1
    Host: example.com
    Accept: application/json
    

    And the following to retrieve only the identifiers of the files:

    GET /api/files?fields=id HTTP/1.1
    Host: example.com
    Accept: application/json
    

    The field query parameter could support a list of values separated by commas, allowing the selection of multiple fields/properties:

    GET /api/files?fields=id,name,author HTTP/1.1
    Host: example.com
    Accept: application/json
    
    0 讨论(0)
提交回复
热议问题