2015-04-15 4 views
0

У меня есть следующий гипотетический Ури в моем Web API приложения:Проверка родительских ресурсов в REST API

/customers/{customerId}/orders/{orderId} 

Вызов этого Ури с подходящими параметрами, в конечном счете, сопоставляет действие на OrderController, как это:

[Route("customers/{customerId}/orders")] 
public IHttpActionResult GetOrders(Int32 customerId) 
{ 
    // Stuff... 
} 

Это действие выполняет действия, связанные с заказом для конкретного клиента. В веб-API, Какова наилучшая стратегия для проверки того, что ресурс родителя «Клиент» действителен?

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

ответ

1

Есть несколько способов подойти к этому:

  1. Assume клиент является действительным. Это плохая идея, потому что кто-то может перейти прямо к URL-адресу заказа и обойти логику проверки клиента.

  2. Проанализируйте логику проверки клиента на уровне служебной среды или бизнес-логики. Затем по вызову API заказов повторите проверку, чтобы убедиться, что клиент действителен.

  3. В зависимости от уровня доступа к данным (например, Entity Framework, ADO.net и т. Д.), Возможно, уже существует связь между Заказчиком и Заказчиком, поэтому у вас должен быть способ, чтобы клиент предоставил и подтвердил, что это правильный клиент для запрашиваемого заказа.

В идеале, код должен подтвердить, что клиент является законным и что клиент является клиентом, который назначен этому заказу.

Смежные вопросы