Самое главное, нет правильного и неправильного ответа на этот вопрос.
Тем не менее, вот что я думаю.
Если вы хотите вернуть один элемент, я хотел бы сделать это:
GET /Item/{Id}
=>
<Item>
...
</Item>
Если {Id}не существует, то сервер должен вернуть 404.
Если я хочу вернуть коллекцию элементов, я бы сделал
GET /Items
=>
<Items>
<Item>...</Item>
<Item>...</Item>
</Items>
Если нет элементов, то он должен вернуть200 с пустым элементом <Items/>
.
Если клиенту действительно легче иметь дело с коллекцией, содержащей только один элемент, вы можете сделать что-то подобное.
GET /Items?Id={Id}
=>
<Items>
<Item> ... </Item>
</Items>
Разница в том, что если бы {Id} не существовало, то я бы имел тенденцию возвращать 200, а не 404.