У меня есть простой контроллер API:
[HttpGet("{conferenceId}/details")]
[ProducesResponseType(typeof(ConferenceDetailsDto), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task<IActionResult> GetConferences(int ConferenceId)
{
var conference = await _dbContext.Conferences
.Where(c => c.Id == ConferenceId)
.FirstOrDefaultAsync();
var speakers = await _dbContext.Speakers.Where(s => s.Id == conference.speakerId).FirstOrDefaultAsync();
var talk = await _dbContext.Talks.Where(t => t.Id == speaker.talkId).FirstOrDefaultAsync();
var conferenceDetails = new ConferenceDetailsDto
{
SpeakerDetails = new SpeakerDetailsDto
{
SpeakerEmail = speaker?.Email,
SpeakerName = speaker?.Name,
SpeakerPhone = speaker?.Phone,
SpeakerAddress = speaker?.Address
},
conferenceName = conference?.Name,
conferenceDate = conference?.Date,
conferenceRoom = conference?.Room,
conferenceHost = conference?.Host,
BillDetails = new BillingDetailsDto
{
BillTo = conference?.Host,
BillingAddress = conference?.BillingAddress,
CreditCard = conference?.CreditCardNumber
},
Talk = new TalkDto
{
TalkName = talk?.Subject,
TalkSpeaker = speaker?.Name,
TalkTitle = talk?.Title
}
};
if (conferenceDetails == null)
return NotFound();
return Ok(conferenceDetails);
}
Теперь я хотел бы контролировать доступ к определенным точкам данных моего API. Например, я не хочу предоставлять платежные данные некоторым клиентам, которые используют мой API. Для некоторых клиентов я хотел бы предоставить только основную информацию о конференции. Я знаю, что могу использовать строку запроса, но это сделало бы мое решение беспорядочным.
Как лучше всего спроектировать этот API, чтобы у меня был контроль над данными, которые я хочу предоставить? Любая помощь или понимание будет принята с благодарностью. Заранее спасибо.