Могу ли я разделить идентификатор ресурса в параметрах REST API между параметрами пути и строки запроса? - PullRequest
0 голосов
/ 30 апреля 2020

Ресурсом REST в моем REST API является Account. Идентификатор учетной записи - это комбинированный ключ, который уникален для cid (идентификатор клиента), SalesOrg и CompanyCode. Если бы я хотел иметь комбинированный идентификатор в параметре пути, я бы понял, что один из способов - использовать разделители между различными элементами, которые составляют мой комбинированный идентификатор. Что-то вроде 123 ~ BSD ~ 11 или может быть cid ~ 123 ^ salesOrg ~ GBS ^ companycode ~ 11. Вместо этого я подумал о том, чтобы иметь REST URI с cid в параметре пути и SalesOrg и CompanyCode в строке запроса. Примерно так:

/ v1 / Accounts / {cid} / contacts? SalesOrg = BSD & CompanyCode = 11

Итак, я предлагаю использовать одну из составляющих моего комбинированного идентификатора в параметре пути и остальные составляющие комбо-идентификатора в Querystring. Это действительная архитектурная практика REST? Если нет, то при каких обстоятельствах мое предложение приемлемо?

1 Ответ

1 голос
/ 30 апреля 2020

Могу ли я разделить идентификатор ресурса между параметрами пути и параметрами строки запроса в API REST?

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

Оба path и запрос включены в строку запроса HTTP-запроса, поэтому вы можете выбрать, какие данные включать в какие из этих частей.

Информация о кодировке что сервер нуждается во фрагменте , не будет продуктивным, потому что эта информация не вообще включена в HTTP-запрос.

Я предлагаю использовать одна из составляющих моего комбо-идентификатора в параметре пути и остальные составляющие комбо-идентификатора в Querystring. Это действительная архитектурная практика REST?

Совершенно приемлемо.

...