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
ตกลง. ข้อกำหนดแปลกๆ เพราะว่ามันไม่ได้สอนวิธีปกติในการทำสิ่งเหล่านี้ให้คุณ งานที่ใช้ส่วนหัวอาจมีประโยชน์มากกว่า เช่น ค้นหาโทเค็นการรับรองความถูกต้องหรืออะไรทำนองนั้นที่ปกติจะส่งในส่วนหัว อย่างไรก็ตาม...เพื่อช่วยเราช่วยคุณ ก่อนอื่นโปรดบอกเราว่าคุณใช้ Web API เวอร์ชันใด - เป็น ASP.NET Framework หรือ ASP.NET Core และผลิตภัณฑ์เวอร์ชันใดภายในนั้น?   -  person ADyson    schedule 14.08.2020
comment
ASP.NET core 3.1.302 (ล่าสุด) โดยใช้ Visual Studio 16.7.1 ล่าสุด   -  person csharpnoob    schedule 14.08.2020
comment
ขอบคุณ. (เวอร์ชัน Visual Studio นั้นไม่เกี่ยวข้องเลย ซึ่งไม่มีผลกระทบใด ๆ ณ รันไทม์ โค้ดจะทำงานในลักษณะเดียวกันหากคุณเขียนไว้ใน Notepad ในตอนแรก) นอกจากนี้ คุณจะสร้างคำขอขาเข้าไปยัง API ได้อย่างไร คุณแน่ใจหรือไม่ว่าส่วนหัวได้รับการตั้งค่าอย่างถูกต้องในคำขอ (แค่พยายามตัดความเป็นไปได้ทั้งหมดออก)   -  person ADyson    schedule 14.08.2020
comment
ฉันใช้บุรุษไปรษณีย์ แน่นอนว่าคำขอได้รับการตั้งค่าอย่างถูกต้อง ในคีย์ที่ฉันเพิ่ม เรียงลำดับโดยไม่มีเครื่องหมายคำพูด และในค่าที่ฉันเพิ่มจริง   -  person csharpnoob    schedule 14.08.2020
comment
ตกลง. แล้วจะเกิดอะไรขึ้นเมื่อคุณรันโค้ดด้านบน? โปรดทราบว่าโดยปกติแล้วส่วนหัวจะถือว่าเป็นสตริง ดังนั้นฉันเดาว่าคุณควรทำ == "true") ในคำสั่ง if ของคุณ หรือคุณต้องแยกค่าออกมา จากนั้นจึงแปลงเป็นบูลีนแล้วทำการเปรียบเทียบ นอกจากนี้ คุณอาจต้องการพิจารณาตรวจสอบส่วนหัวที่มีอยู่แน่นอนก่อนเพื่อจัดการกับสถานการณ์นั้น (ฉันเดาว่าคุณถือว่ามันเป็นข้อผิดพลาดหรือถือว่าการไม่มีส่วนหัวแสดงถึงค่าเริ่มต้นเป็นเท็จ)   -  person ADyson    schedule 14.08.2020
comment
ฉันไม่รู้ว่าจะต้องส่งคืนอาร์เรย์เอนทิตีที่เรียงลำดับแล้ว ดังนั้นฉันจึงไม่สามารถลองได้   -  person csharpnoob    schedule 14.08.2020
comment
ฮะ? คุณไม่จำเป็นต้องรู้สิ่งนี้เพื่อทดสอบว่าคำสั่ง if ของคุณใช้งานได้หรือไม่ เพียงใช้ VS debugger เพื่อทดสอบโค้ดของคุณในขณะนี้ แต่ฉันค่อนข้างแน่ใจว่าคุณจะต้องแก้ไขด้วยวิธีใดวิธีหนึ่งที่ฉันระบุไว้   -  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