C# Получить заголовки запроса и вернуть отсортированные объекты

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

// GET: api/Books
    [HttpGet]
    public async Task<ActionResult<IEnumerable<Book>>> GetAllBooks()
    {
        if (Request.Headers["sorted"] == true)
        {
         

        }
        return await _context.Books.ToListAsync();
    }

person csharpnoob    schedule 14.08.2020    source источник
comment
Помимо конкретного вопроса, обычно, если кто-то хочет установить такую ​​​​опцию, она будет отправлена ​​​​как параметр запроса, а не заголовок (и тогда вашему коду будет намного проще получить доступ, так как он будет входить в качестве параметра к методу).   -  person ADyson    schedule 14.08.2020
comment
Я вас понимаю, я бы тоже так сделал и добавил атрибут [FromRoute] и получил значение. Но моя спецификация назначения говорит об использовании заголовков HTTP-запроса. Усовершенствуйте приведенный выше API (GET /api/allbooks) для поиска параметра в заголовке HTTP-запроса, чтобы вернуть отсортированную версию книг по названию.   -  person csharpnoob    schedule 14.08.2020
comment
В порядке. Странное требование, потому что оно не учит вас нормальному способу делать эти вещи. Задача с использованием заголовков может быть более полезной, например, для поиска маркера аутентификации или чего-то подобного, который обычно отправляется в заголовке. В любом случае... чтобы мы могли помочь вам, сначала сообщите нам, какую версию веб-API вы используете здесь - это ASP.NET Framework или ASP.NET Core? А также какая версия продукта в этом?   -  person ADyson    schedule 14.08.2020
comment
Ядро ASP.NET 3.1.302 (последняя версия) с использованием последней версии Visual Studio 16.7.1.   -  person csharpnoob    schedule 14.08.2020
comment
Спасибо. (Кстати, версия Visual Studio не имеет значения, она не имеет никакого эффекта во время выполнения. Код будет работать точно так же, если вы изначально написали его в Блокноте). Кроме того, как вы генерируете входящий запрос к API? Вы уверены, что заголовок задан правильно в запросе? (Просто пытаюсь исключить все возможности)   -  person ADyson    schedule 14.08.2020
comment
Я использую Почтальон. Определенный запрос задан правильно, в ключ я добавляю отсортировано без кавычек, а в значение добавляю true.   -  person csharpnoob    schedule 14.08.2020
comment
В порядке. Так что же происходит, когда вы запускаете приведенный выше код? Имейте в виду, что заголовки обычно обрабатываются как строки. Поэтому я предполагаю, что либо вы должны сделать == "true") в своем операторе if, либо вам нужно извлечь значение, затем привести его к логическому значению, а затем выполнить сравнение. Кроме того, вы можете сначала проверить, что заголовок определенно существует, чтобы справиться с этим сценарием (я думаю, вы либо рассматриваете это как ошибку, либо предполагаете, что отсутствие заголовка подразумевает значение по умолчанию false).   -  person ADyson    schedule 14.08.2020
comment
Я не знаю, как вернуть массив отсортированных сущностей, поэтому не смог попробовать.   -  person csharpnoob    schedule 14.08.2020
comment
хм? Вам не нужно знать это, чтобы проверить, работает ли ваш оператор if. просто используйте отладчик VS, чтобы проверить свой код в его нынешнем виде. Но я совершенно уверен, что вам нужно будет изменить его одним из способов, которые я указал.   -  person ADyson    schedule 14.08.2020
comment
if(bool.TryParse(Request.Headers["sorted"], out bool isSorted) && isSorted) изменить его на это.   -  person iSR5    schedule 14.08.2020
comment
Почему этот вопрос был опубликован дважды? stackoverflow.com/questions/63411882/   -  person Airn5475    schedule 14.08.2020
comment
ответил здесь   -  person Hameed    schedule 14.08.2020
comment
Отвечает ли это на ваш вопрос? C# получает заголовки запросов и возвращает отсортированный список объектов   -  person Hameed    schedule 15.08.2020