Основное назначение URL-имен: Ресурсно-ориентированная архитектура (ROA). т.е. иерархия ресурсов.
Давайте возьмем пример из вашего вопроса. У вас есть пользовательский сервис. Я предполагаю, что там вы принимаете user
в качестве root resource
.
Итак, давайте определимся, как выглядит пользователь. Для примера я возьму это так.
User
| - code
| - name
| - cars
Здесь я предполагаю, что пользователь может иметь код , имя и некоторые автомобили (может быть больше одного).
А теперь посмотрим, как мы можем видеть машину.
Car
| - number
| - make
| - model
| - year
Теперь вы можете определить объект json для пользователя следующим образом.
{
"code": "001A",
"name": "alice",
"cars": [
{
"number": "ab123",
"make": "toyota",
"model": "corolla",
"year": 2015
},
{
"number": "we345",
"make": "nissan",
"model": "sunny",
"year": 2017
}
]
}
Поэтому, если я хочу предоставить конечную точку для извлечения всех пользователей, я бы дал конечную точку, подобную этой.
/api/user-service/users
Обратите внимание, что пользователей (- во множественном числе) просто потому, что у меня может быть несколько пользователей. Это даст ответ как это ..
[
{
"code": "001A",
"name": "alice",
"cars": [
{
"make": "toyota",
"model": "corolla",
"year": 2015
},
{
"make": "nissan",
"model": "sunny",
"year": 2017
}
]
},
{
"code": "001B",
"name": "bob",
"cars": [
{
"make": "toyota",
"model": "yaris",
"year": 2016
},
{
"make": "bmw",
"model": "318i",
"year": 2017
}
]
}
]
И если нам нужна конечная точка для извлечения данных для конкретного пользователя, я бы дал и конечную точку, подобную этой.
/api/user-service/users/{user-code}
Пример
/api/user-service/users/001A
Так что это даст ответ вроде этого.
{
"code": "001A",
"name": "alice",
"cars": [
{
"number": "ab123",
"make": "toyota",
"model": "corolla",
"year": 2015
},
{
"number": "we345",
"make": "nissan",
"model": "sunny",
"year": 2017
}
]
}
И если мы хотим, чтобы конечная точка извлекала все автомобили данного пользователя, это было бы так.
/api/user-service/users/{user-code}/cars
Обратите внимание, что автомобилей (--plural)
Пример * * тысяча пятьдесят-две
/api/user-service/users/001A/cars
Так что это даст ответ, подобный этому.
[
{
"number": "ab123",
"make": "toyota",
"model": "corolla",
"year": 2015
},
{
"number": "we345",
"make": "nissan",
"model": "sunny",
"year": 2017
}
]
Надеюсь, вы получите базовые знания об соглашениях об именах REST.