ลูกค้าทำการร้องขออย่างต่อเนื่องโดยมีส่วนหัวการยอมรับของ 'application / json' และประเภทเนื้อหาของ 'application / json'
ใช่นี่เป็นสิ่งที่ต้องทำ แต่ไม่ได้หมายความว่าผู้ขายจะใส่ใจ ในขณะที่ฉันเข้าใจความคับข้องใจของคุณอย่างสิ้นเชิงเพราะฉันคิดว่าบริการ JSON ควรตอบสนองต่อ JSON เสมอ แต่มีหลายตัวอย่างที่ไม่ได้เป็นเช่นนั้น
ตลอดโครงการนี้มีการใช้วิธีปฏิบัติเดียวกันนี้กับผู้ขายที่ต่างกันสองรายและบริการที่แตกต่างกันสองรายการ ฉันพบว่าตัวเองต้องพิสูจน์เหตุผลที่บริการที่จำเป็นต้องมีการเปลี่ยนแปลง ผู้ขายระบุว่าลูกค้าควรรับมือกับสิ่งนี้และแม้แต่ห้องสมุด REST ที่ฉันเลือกก็ถูกตั้งคำถาม (RestEasy) เพราะไม่ได้จัดการกับสิ่งนี้ตามค่าเริ่มต้น 'นอกกรอบ'
ฉันต้องเห็นด้วยกับผู้ขาย นี่คือบริการของพวกเขาและตราบใดที่เอกสารเหล่านี้ระบุกรณีพิเศษสำหรับการใช้งานอย่างชัดเจนคุณจะไม่สามารถกำหนดได้ว่าพวกเขาจะเปลี่ยนเป็นอย่างไร มันเป็นข้อเสียสำหรับพวกเขาเนื่องจากนักพัฒนาจะใช้ API ของพวกเขาช้าและหากพวกเขาฟังสิ่งที่นักพัฒนาต้องการพวกเขาก็จะเปลี่ยนมัน แต่น่าเศร้าที่ไม่มีกฎที่จะต้องปฏิบัติตามมาตรฐาน
คำถามคือฉันไม่มีอะไร?
ส่วนหัวของคำขอไม่มีความหมายอะไรนอกจากว่าพวกเขาจะถูกขัดจังหวะอย่างถูกต้องในส่วนอื่น ๆ ฉันรู้ว่าถ้าฉันพัฒนาเว็บ API โดยใช้ PHP งั้นก็ตกนรกด้วยส่วนหัวคำขอ ฉันสามารถตอบสนองกับสิ่งที่ฉันต้องการ ในขณะที่บริการที่กำหนดค่าใน IIS ด้วย C # ให้การจัดการส่วนหัวคำขอได้ง่ายขึ้นประเภทและการจัดการประเภทการตอบสนอง มีหลายอย่างที่เกี่ยวข้องกับเครื่องมือที่ผู้ขายใช้ในการสร้าง API
ฉันเป็นคนที่กระตือรือร้นเกี่ยวกับเรื่องนี้หรือไม่
ใช่และไม่ใช่ฉันมีเพื่อนนักพัฒนาซอฟต์แวร์ซึ่งไม่สามารถผ่านมาได้ พวกเขาจะได้รับการแก้ไขโดยปัญหาและไม่สามารถทำงานต่อไปได้จนกว่า API จะทำงานตามที่คาดหวัง ตอนนี้มันเป็นเรื่องอื้อฉาว
มันเป็นปัญหาเพราะผู้ขายได้สร้าง "งานมากขึ้น" เพื่อให้งานของคุณเสร็จสมบูรณ์ ใคร ๆ ก็คงต้องผิดหวังกับสิ่งนั้น ฉันรู้ว่าฉันจะเป็น
ตกลงหรือไม่ที่จะมี JSON API ที่ไม่มีประเภทแอปพลิเคชัน / json ในสถานการณ์นี้
อย่างแน่นอน แต่มันไม่ใช่วิธีปฏิบัติที่ดี
ลูกค้าสามารถบอกเซิร์ฟเวอร์ได้ว่าประเภทบริบทrequest
คืออะไร response
แต่ก็มีความสามารถในการบังคับใช้ชนิดเนื้อหาสำหรับ ลูกค้าสามารถแจ้งเซิร์ฟเวอร์ได้ว่าจะaccept
มีการรวบรวมประเภทเนื้อหาที่เป็นไปได้
นิยามฟิลด์ส่วนหัว
ฟิลด์ยอมรับคำขอส่วนหัวสามารถใช้เพื่อระบุประเภทสื่อบางประเภทที่ยอมรับได้สำหรับการตอบกลับ ยอมรับส่วนหัวสามารถใช้เพื่อระบุว่าคำขอนั้นถูก จำกัด เฉพาะกับชุดขนาดเล็กประเภทที่ต้องการเช่นในกรณีของคำขอสำหรับภาพในบรรทัด
เป็นไปได้ที่ลูกค้าจะร้องขอภาพimage/jpeg
แต่เซิร์ฟเวอร์ตอบกลับด้วยtext/html
และรหัสสถานะ404
หากไม่พบภาพ เซิร์ฟเวอร์สามารถตอบกลับอย่างไม่ถูกต้อง มีเว็บไซต์ Wordpress มากมายที่ตอบสนองtext/html
และรหัสสถานะ200
สำหรับไฟล์ที่ไม่พบหน้าเว็บ
ตอนนี้นั่นคือการฝึกBADทั้งหมดในส่วนของเซิร์ฟเวอร์ สิ่งที่ฉันพยายามจะบอกคุณก็คือมันเป็นไปได้อย่างแน่นอนและเกิดขึ้นบ่อยครั้ง ผู้คนไม่รู้ว่าพวกเขากำลังทำอะไรเมื่อกำหนดค่าสิ่งเหล่านี้
การอ้างอิงจะได้รับการชื่นชม คุณจะแก้ไขสถานการณ์นี้จากมุมมองทางการค้าได้อย่างไร
ฉันพบปัญหานี้ในบางโครงการ คุณpost
JSON data ไปยังเซิร์ฟเวอร์และให้การตอบกลับ JSON หรือ HTML
ไม่ใช่เรื่องใหญ่ที่จะรู้ว่าประเภทใดที่ตอบสนอง หากอักขระตัวแรกคือ{
หรือ[
คุณสามารถใช้ JSON ถ้าเป็นเช่นนั้น<
คุณสามารถถือว่า HTML นั่นเป็นวิธีที่ฉันจัดการในอดีต บางครั้งโปรแกรมเมอร์ที่เขียน API รู้แจ็คเกี่ยวกับส่วนหัว HTTP ทั้งหมด ทุกอย่างกลับมาเป็นtext/html
คำตอบ หากคุณโชคดีพวกเขามี Apache กำหนดค่าให้เริ่มต้นtext/plain
ซึ่งบางครั้งสามารถช่วยได้
ปัญหาเหล่านี้มีอยู่และจะยังคงมีอยู่ต่อไปในอนาคต การสื่อสารระหว่างเซิร์ฟเวอร์กับเซิร์ฟเวอร์นั้นเป็นกิจกรรมที่ไม่ได้ควบคุม ไม่มีเนื้อความที่ควบคุมที่จะขับไล่ผู้ขายจากสหภาพสำหรับเซิร์ฟเวอร์ที่ให้การตอบสนอง HTTP ที่ไม่ดี