Design return values for RESTful API

后端 未结 2 1240
Happy的楠姐
Happy的楠姐 2021-01-23 03:18

There is a lot of documentation for RESTful services. I need more Information about the returning representations.

What is the best way for design the return value for R

相关标签:
2条回答
  • 2021-01-23 03:45

    Using query parameters to request a subset of fields

    You can return the same representation in both cases and support filtering the fields to be returned with a query parameter:

    GET /api/cars?fields=color,year HTTP/1.1
    Host: example.com
    Accept: application/json
    

    Using custom media types to return a predefined set of fields

    Another approach is to define a custom media type for a partial representation of your resource.

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

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

    And the following to return a partial representation for your resource (the fields you will include in the partial representation are up to you):

    GET /api/cars HTTP/1.1
    Host: example.com
    Accept: application/vnd.company.partial+json
    
    0 讨论(0)
  • 2021-01-23 03:47

    Use HTTP Content negotiation with vendor types. Don't use URL query parameters if you request different representations of the same resource.

    Request short representation application/vnd.com.example.cars.short+json of list

    GET http://example.com/rest/cars
    Accept: application/vnd.com.example.cars.short+json
    

    Response:

    200 OK
    Content-Type: application/vnd.com.example.cars.short+json
    
    [
      {
        "id": 12,
        "brand": "Ford"
      },
      {
        "id": 34,
        "brand": "Volkswagen"
      },
      {
        "id": 1234,
        "brand": "Tesla"
      }
    ]
    

    Request long represenation application/vnd.com.example.cars.long+json of single car

    GET http://example.com/rest/cars/1234
    Accept: application/vnd.com.example.cars.short+json
    

    Response

    200 OK
    Content-Type: application/vnd.com.example.cars.long+json
    
    {
      "id": 1234,
      "brand": "Tesla",
      "manufactured": "2016-03-15",
      "color": "black"
    }
    

    The vendor types can be used for both resources.

    0 讨论(0)
提交回复
热议问题