URL URL Restful для получения данных JSON для файлов другого типа - PullRequest
0 голосов
/ 14 мая 2018

Я создаю релевантные URL-адреса API для получения данных о продуктах. Итак, у меня есть,

POST /products
GET /products
GET /products/{:id}
DELETE /products/{:id}

Одним из требований является предоставление конечных точек для получения данных о продукте в формате JSON для экспорта в другой формат файла, CSV и PDF. Это будет вызывать другой сервис (служба экспорта).

Пример ответа:

для PDF

{ 
  products_pdf: {
     title: 'Products',
     sub_title: 'as per May 20 2018',
     products: [
       {
          name: 'product A', 
       },
       {
          name: 'product B', 
       }
     ]
  }
}

для CSV, более простой ответ, чем PDF. Исходя из требований, оба не могут быть обслужены в одном ответе.

{
  products_csv: [
    {
      name: 'product A',
    },
    {
      name: 'product B'
    } 
  ]
}

Какая правильная конечная точка URL для него?

Я думаю о

GET /products/exports/{:file_format}
GET /products/exports/csv
GET /products/exports/pdf

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

Для меня формат данных необязательный и поэтому не должен определять конечную точку ресурса.Самым логичным решением для меня было бы иметь формат по умолчанию и использовать параметр строки запроса для переопределения, например

GET /products?format={pdf|csv}
0 голосов
/ 14 мая 2018

IMO, слово export в URL выглядит не очень хорошо.Конечная точка может иметь тип ответа в расширении URL.

Пример:

/products.json
/products.xml
/products.pdf
/products.csv

Если вам не нравится этот шаблон, вы можете очень хорошо использовать заголовок HTTP Accept.

0 голосов
/ 14 мая 2018

Старый API Google Finance предоставлял исторические данные в различных форматах. Эти форматы могут быть запрошены через разные аргументы параметра строки запроса output.

Например:

http://www.google.com/finance/historical?q=GOOGL&output=csv

Вы должны спроектировать конечную точку для обработки параметра и возврата ответа в формате в соответствии с указанным выходным аргументом. Если указан неверный тип вывода, выберите значение по умолчанию, которое наиболее подходит для ваших конкретных данных.

...