Параметризация структуры данных в API-проекте - PullRequest
0 голосов
/ 24 сентября 2018

Я смутно имею следующий документ:

# Group Cats

## Get ALl The Cats [GET /api/v1/cats{?page%5bsize%5d,page%5bnumber%5d,sort,filter}]

+ Parameters
    + page%5bsize%5d: 10 (number, optional) - Maximum number of resources in a single paginated response.
    + page%5bnumber%5d: 2 (number, optional) - Page number to fetchedfor the paginated response.

+ Request Success Reports (application/json)

+ Response 200 (application/json)
    + Attributes
        + data (array[Cat], required, fixed-type)
            + (Cat)
        + meta (Metadata, optional)
        + links (Links)

## Data Structures

### Links
+ self: `/api/v1/resources?page[number]=2&page[size]=10` (string, required)
+ first: `/api/v1/resources?page[number]=1&page[size]=10` (string, required)
+ last: `/api/v1/resources?page[number]=3&page[size]=10` (string, required)
+ prev: `/api/v1/resources?page[number]=1&page[size]=10` (string, required)
+ next: `/api/v1/resources?page[number]=3&page[size]=10` (string, optional)

Я реорганизовал ссылки в его собственных структурах данных.Все это работает хорошо.То, что я хочу сделать, это сделать часть URL в Links динамической, так что resources будет заменено тем, что я передам. Так что-то вроде:

### Links (something)
+ self: `/api/v1/{something}?page[number]=2&page[size]=10` (string, required)
+ first: `/api/v1/{something}?page[number]=1&page[size]=10` (string, required)
+ last: `/api/v1/{something}?page[number]=3&page[size]=10` (string, required)
+ prev: `/api/v1/{something}?page[number]=1&page[size]=10` (string, required)
+ next: `/api/v1/{something}?page[number]=3&page[size]=10` (string, optional)

И тогда я мог бы сделать что-то вродеэто:

+ Response 200 (application/json)
    + Attributes
        + data (array[Cat], required, fixed-type)
            + (Cat)
        + meta (Metadata, optional)
        + links (Links `cats`)

с заменой resources на cats.

...