คำถามติดแท็ก api

application programming interface (API) เป็นข้อกำหนดสำหรับซอฟต์แวร์อื่นที่ใช้กับซอฟต์แวร์อื่น

1
RESTful API และ i18n: จะออกแบบการตอบสนองอย่างไร?
เรากำลังออกแบบ RESTful API ที่มีวัตถุประสงค์เพื่อตอบสนองความต้องการของลูกค้าเป็นหลัก เนื่องจากสถานการณ์ที่เฉพาะเจาะจงลูกค้าจึงต้องทำการร้องขอให้น้อยที่สุดเท่าที่จะทำได้ API จัดการ i18n ผ่านส่วนหัว Accept-Language ในคำขอ สิ่งนี้ใช้ได้กับทุกสิ่งที่ลูกค้าต้องทำยกเว้นคุณลักษณะหนึ่งซึ่งลูกค้าต้องเก็บการตอบสนองของคำขอไปยังจุดปลายเดียวในสถานที่ที่มีอยู่ทั้งหมด เราสามารถออกแบบ API ในลักษณะที่ช่วยให้ลูกค้าสามารถดึงข้อมูลทั้งหมดนี้ได้ด้วยการร้องขอเพียงครั้งเดียวและไม่ทำลายการออกแบบ RESTful API ที่มีโครงสร้างที่สอดคล้องและมีโครงสร้างที่ดี ตัวเลือกที่เราพิจารณาแล้ว: การอนุญาตให้รวมหลายโลแคลในส่วนหัว Accept-Language และเพิ่มเวอร์ชันที่โลคัลไลซ์สำหรับโลแคลที่ร้องขอทั้งหมดในการตอบกลับแต่ละอันระบุด้วยรหัสภาษา ISO 639-1 เป็นคีย์ การสร้างบางสิ่งเช่นพารามิเตอร์ "? all_languages ​​= true" ไปยังปลายทางนั้นและส่งคืนเวอร์ชันที่แปลแล้วสำหรับโลแคลที่มีอยู่ทั้งหมดในการตอบกลับหากมีพารามิเตอร์นั้น (หากไม่มีสิ่งใดที่ได้ผลข้างต้นสำหรับเรา) ทำการร้องขอหลายครั้งเพื่อคว้าเวอร์ชั่นที่แปลเป็นภาษาท้องถิ่นทั้งหมดจากลูกค้า อันไหนเป็นทางเลือกที่ดีที่สุด?
15 rest  api  api-design  http 

2
วิธีที่ดีที่สุดในการสร้างรูปแบบการตอบสนองข้อผิดพลาด REST API และระบบรหัสข้อผิดพลาดคืออะไร?
การใช้งาน REST ของฉันจะส่งคืนข้อผิดพลาดใน JSON ด้วยโครงสร้างถัดไป: { "http_response":400, "dev_message":"There is a problem", "message_for_user":"Bad request", "some_internal_error_code":12345 } ฉันแนะนำให้สร้างโมเดลการตอบกลับพิเศษซึ่งฉันสามารถส่งผ่านค่าที่ต้องการสำหรับคุณสมบัติ (dev_message, message_for_user, some_internal_error_code) และส่งคืนได้ ในรหัสมันจะคล้ายกับสิ่งนี้: $responseModel = new MyResponseModel(400,"Something is bad", etc...); รุ่นนี้มีหน้าตาเป็นอย่างไร ฉันควรใช้วิธีการอย่างเช่น successResponse () โดยที่ฉันจะส่งผ่านเฉพาะข้อมูลตัวอักษรและรหัสจะเป็นค่าเริ่มต้น 200 รายการ ฉันติดอยู่กับเรื่องนี้ และนี่เป็นส่วนแรกของคำถามของฉัน: ฉันจำเป็นต้องใช้โมเดลนี้หรือไม่ เพราะตอนนี้ฉันเพิ่งกลับอาร์เรย์โดยตรงจากรหัส ส่วนที่สองเป็นเรื่องเกี่ยวกับระบบรหัสข้อผิดพลาด รหัสข้อผิดพลาดจะอธิบายไว้ในเอกสาร แต่ปัญหาที่ฉันพบอยู่ในรหัส วิธีที่ดีที่สุดในการจัดการรหัสข้อผิดพลาดคืออะไร? ฉันควรเขียนมันไว้ในโมเดลหรือไม่? หรือมันจะเป็นการดีกว่าถ้าจะสร้างบริการแยกต่างหากสำหรับจัดการสิ่งนี้ อัพเดท 1 ฉันใช้คลาสจำลองเพื่อการตอบสนอง มันเป็นคำตอบที่คล้ายกันของ Greg …
15 php  mvc  rest  api 

7
ฟังก์ชันของไลบรารี C ควรคาดหวังความยาวของสตริงหรือไม่?
ขณะนี้ฉันกำลังทำงานกับไลบรารีที่เขียนเป็น C ฟังก์ชันจำนวนมากของไลบรารีนี้คาดว่าจะมีสตริงเป็นchar*หรือconst char*ในอาร์กิวเมนต์ ฉันเริ่มต้นด้วยฟังก์ชั่นเหล่านั้นมักจะคาดหวังความยาวของสตริงsize_tเพื่อไม่ให้มีการยกเลิกค่า null อย่างไรก็ตามเมื่อเขียนการทดสอบสิ่งนี้ส่งผลให้มีการใช้งานบ่อยstrlen()เช่น: const char* string = "Ugh, strlen is tedious"; libFunction(string, strlen(string)); การวางใจให้ผู้ใช้ส่งผ่านสายอักขระที่ถูกยกเลิกอย่างถูกต้องจะนำไปสู่ความปลอดภัยที่น้อยลง แต่มีความรัดกุมมากกว่าและ (ในความคิดของฉัน) รหัสที่อ่านได้: libFunction("I hope there's a null-terminator there!"); ดังนั้นการปฏิบัติที่เหมาะสมที่นี่คืออะไร? ทำให้ API มีความซับซ้อนมากขึ้นในการใช้งาน แต่บังคับให้ผู้ใช้นึกถึงการป้อนข้อมูลหรือบันทึกข้อกำหนดสำหรับสตริงที่สิ้นสุดด้วยค่า null และเชื่อใจผู้โทร
15 c  api  strings 

1
หน่วยทดสอบไคลเอนต์และห่อหุ้ม API
ฉันวนเวียนวนไปรอบ ๆ เพื่อหาวิธีที่ดีที่สุดในการทดสอบหน่วยห้องสมุดลูกค้า API ที่ฉันกำลังพัฒนา ห้องสมุดที่มีClientระดับซึ่งโดยทั่วไปมี 1: การทำแผนที่ 1 กับ API และอีกชั้นซึ่งมีอินเตอร์เฟซที่ใช้งานง่ายขึ้นกว่าด้านบนของWrapperClient Wrapper --> Client --> External API ก่อนอื่นฉันเขียนการทดสอบทั้งคู่ClientและWrapperทดสอบอย่างมีประสิทธิภาพว่าจะส่งต่อไปยังฟังก์ชันที่เหมาะสมของสิ่งที่ทำงาน ( WrapperทำงานClientและClientทำงานกับการเชื่อมต่อ HTTP) ฉันเริ่มรู้สึกอึดอัดกับสิ่งนี้เพราะฉันรู้สึกว่าฉันกำลังทดสอบการใช้งานคลาสเหล่านี้มากกว่าที่จะเป็นส่วนต่อประสาน ในทางทฤษฎีฉันสามารถเปลี่ยนคลาสให้มีการใช้งานที่ถูกต้องสมบูรณ์แบบอื่น แต่การทดสอบของฉันจะล้มเหลวเพราะฟังก์ชั่นที่ฉันคาดว่าจะเรียกไม่ถูกเรียก ฟังดูเหมือนการทดสอบที่เปราะบางสำหรับฉัน หลังจากนี้ฉันคิดถึงอินเทอร์เฟซของคลาส การทดสอบควรตรวจสอบว่าชั้นเรียนทำงานตามที่ตั้งใจจริงมากกว่าที่จะทำ แล้วฉันจะทำสิ่งนี้ได้อย่างไร สิ่งแรกที่ควรคำนึงถึงคือการขัดคำขอ API ภายนอก อย่างไรก็ตามฉันกังวลใจเกี่ยวกับการขยายบริการภายนอก ตัวอย่างของ API ที่ถูก stubbed จำนวนมากที่ฉันเคยเห็นเพียงแค่ให้การตอบกลับสำเร็จรูปซึ่งดูเหมือนเป็นวิธีที่ง่ายมากที่จะทดสอบว่าโค้ดของคุณทำงานได้อย่างถูกต้องกับ API ปลอมของคุณ ทางเลือกคือการเยาะเย้ยบริการซึ่งเป็นไปไม่ได้และจะต้องได้รับการปรับปรุงให้ทันสมัยอยู่เสมอเมื่อใดก็ตามที่มีการเปลี่ยนแปลงการบริการจริง - ซึ่งรู้สึกว่าเกินความเป็นจริงและเสียเวลา ในที่สุดฉันอ่านข้อความนี้จากคำตอบอื่นของโปรแกรมเมอร์ SE : งานของไคลเอนต์ API ระยะไกลคือการออกสายบางอย่าง - …

1
คีย์ API - ในเนื้อหาหรือส่วนหัว
กำลังทำงานกับ API ในขณะนี้และต้องการรวบรวมความคิดเห็นเกี่ยวกับตำแหน่งที่ดีที่สุดในการส่งคีย์ API ฉันรู้ว่าไม่ควรเข้าไปใน URL สิ่งนี้ทำให้ส่วนหัวคำขอหรือเนื้อหาข้อความ หากฉันใส่ไว้ในส่วนหัวฉันสามารถสร้างวิธีทั่วไปสำหรับดึงมันออกมาซึ่งสามารถใช้ได้กับทุกบริการอย่างไรก็ตามข้อมูลจำเพาะที่ฉันส่งมานั้นต้องการในร่างกาย (เช่นในสตริง JSON ที่รวมเป็นส่วนหนึ่งของ วัตถุที่ทำให้เป็นอนุกรมในเนื้อหาของ POST)
14 api 

1
วิธีที่เหมาะสมของการซ้อนรีซอร์สในโมเดล REST คืออะไร?
ฉันออกแบบ REST API ของการบริการและติดอยู่กับวิธีที่เหมาะสมในการซ้อนทรัพยากร ทรัพยากร: คู่ค้าตั๋วการตั้งค่า การเชื่อมต่อระหว่างทรัพยากร: พันธมิตรมีตั๋วหลายใบ พันธมิตรมีการตั้งค่า ตรรกะ Bussines: คุณสามารถแสดงรายชื่อพันธมิตรทั้งหมดเป็นผู้ใช้ที่ไม่ระบุชื่อ คุณสามารถเพิ่มตั๋วใหม่ให้กับพันธมิตรที่ระบุในฐานะผู้ใช้ที่ไม่ระบุชื่อ พันธมิตรเท่านั้นที่สามารถแสดงตั๋วของเขา พันธมิตรเท่านั้นที่สามารถแก้ไขตั๋วของเขาได้ พันธมิตรเท่านั้นที่สามารถแสดงรายการการตั้งค่า พันธมิตรเท่านั้นที่สามารถแก้ไขการตั้งค่า สิ่งที่ฉันทำจนถึงตอนนี้: แหล่งข้อมูลพันธมิตร GET / คู่ค้า - แสดงรายชื่อพันธมิตรทั้งหมด GET / คู่ค้า /: id - แสดงรายละเอียดของพันธมิตรที่ระบุโดย: พารามิเตอร์ id GET / คู่ค้า /: partner_id / ตั๋ว - รายการตั๋วของพันธมิตร GET / คู่ค้า /: คู่ค้า / ตั๋ว /: …
14 api  rest  api-design 

5
ในการออกแบบ API ควรใช้ / หลีกเลี่ยง Ad Hoc polymorphism เมื่อใด
ซูคือการออกแบบห้องสมุด Magician.jsJavaScript, Linchpin มันเป็นฟังก์ชั่นที่ดึงRabbitออกมาจากการโต้แย้งผ่าน เธอรู้ว่าผู้ใช้อาจต้องการที่จะดึงกระต่ายออกจากStringการNumberเป็นบางทีแม้กระทั่งFunction HTMLElementเมื่อคำนึงถึงสิ่งนี้เธอสามารถออกแบบ API ของเธอได้ดังนี้: อินเตอร์เฟซที่เข้มงวด Magician.pullRabbitOutOfString = function(str) //... Magician.pullRabbitOutOfHTMLElement = function(htmlEl) //... แต่ละฟังก์ชั่นในตัวอย่างด้านบนจะรู้วิธีจัดการอาร์กิวเมนต์ประเภทที่ระบุในชื่อฟังก์ชัน / ชื่อพารามิเตอร์ หรือเธอสามารถออกแบบได้เช่น: อินเทอร์เฟซ "เฉพาะกิจ" Magician.pullRabbit = function(anything) //... pullRabbitจะต้องพิจารณาถึงความหลากหลายของประเภทที่คาดหวังที่แตกต่างกันซึ่งการanythingโต้แย้งอาจเป็นประเภทที่ไม่คาดคิด (แน่นอน): Magician.pullRabbit = function(anything) { if (anything === undefined) { return new Rabbit(); // out of thin air } else if (isString(anything)) …

4
การใช้ไวยากรณ์ภาษาธรรมชาติใน API ได้อย่างคล่องแคล่ว
ฉันกำลังหาข้อสรุปเกี่ยวกับ API ของฐานข้อมูล WebSQL / Phonegap และฉันพบว่าตัวเองทั้งที่ถูกดึงดูดและสงสัยว่าจะกำหนด API ได้อย่างคล่องแคล่วซึ่งเลียนแบบการใช้ไวยากรณ์ภาษาอังกฤษตามธรรมชาติ อาจอธิบายได้ง่ายที่สุดผ่านตัวอย่าง ต่อไปนี้เป็นข้อความค้นหาที่ถูกต้องทั้งหมดในไวยากรณ์ของฉันและความคิดเห็นจะอธิบายความหมายที่ต้องการ: //find user where name equals "foo" or email starts with "foo@" find("user").where("name").equals("foo").and("email").startsWith("foo@") //find user where name equals "foo" or "bar" find("user").where("name").equals("foo").or("bar"); //find user where name equals "foo" or ends with "bar" find("user").where("name").equals("foo").or().endsWith("bar"); //find user where name equals or ends …
14 javascript  api 

4
วิธีทำการทดสอบ API ภายนอก (Blackbox)
สมมติว่าคุณใช้ API จากผู้ขายวิธีการตรวจสอบให้แน่ใจว่า API ของพวกเขาทำงานได้ตามที่คาดไว้หรือไม่ ข้อกังวลหลักของฉันคือบางครั้งผู้ขายได้ผลักดันการเปลี่ยนแปลงรหัสของพวกเขาและทำลาย API เราต้องการมีซอฟต์แวร์อัตโนมัติบางประเภทเพื่อทดสอบพวกเขาอย่างต่อเนื่อง วิธีจัดการกับสิ่งนี้?

6
คุณจะเรียนรู้กรอบมาตรฐาน / API / ฟังก์ชันของภาษาได้อย่างไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันเข้าใจวิธีโค้ด ฉันรู้วิธีการใช้ภาษาพื้นฐานที่ฉันใช้เป็นประจำ ฉันรู้วิธีการเขียนนิพจน์ปกติขั้นพื้นฐานเล็กน้อยฉันสามารถพูดคุยกับฐานข้อมูลฉันสามารถรับอินพุตพิมพ์ออกจัดการไฟล์และอื่น ๆ ฉันมั่นใจได้ว่าความสามารถขั้นพื้นฐานของฉันในการคายรหัสที่มาสำหรับ โปรแกรมที่ซับซ้อนปานกลาง ปัญหาของฉันคือฉันไม่เคยรู้สึกว่ามันเพียงพอ ฉันรู้สึกว่าฉันรู้แค่เพียงส่วนเล็ก ๆ ของห้องสมุดมาตรฐานของภาษาของฉันและจนกว่าฉันจะเข้าใจทุกอย่างอย่างน้อยก็ผ่านไปฉันไม่มีสิทธิ์แม้แต่จะพยายามใช้งานด้วยซ้ำ ฉันเพิ่งออกจากวิทยาลัย (ชุมชน / จูเนียร์ / whathaveyou) และเพื่อนของฉันกำลังหางานในอุตสาหกรรม แต่ฉันก็ยังรู้สึกว่าเป็นของปลอมหรือเป็นปัญหาที่ตอบยากและฉันก็ไม่ดีพอ มีเครื่องหมายที่ดีสำหรับ "ฉันรู้เพียงพอ" ที่ฉันสามารถใช้เพื่อรับรองตัวเองว่าฉันสามารถเขียนโค้ดได้หรือไม่? ฉันควรใช้ข้อเท็จจริงที่ว่าอย่างน้อยฉันสามารถเขียนรหัส FizzBuzz เป็นตัวบ่งชี้ว่าไม่เป็นไรที่จะนำไปใช้กับสิ่งต่าง ๆ ? ฉันจะเรียนรู้เพิ่มเติมเกี่ยวกับไลบรารีเฟรมเวิร์กและ / หรือ API มาตรฐานเหล่านี้ได้ง่ายกว่าได้อย่างไร ฉันเขียนโค้ดเป็นประจำฉันอ่านหนังสือ แต่ความรู้ของฉันก็ยังคงตื้นเขิน ช่วยด้วย!

5
วิธีจำลอง REST API ได้อย่างไร
ฉันกำลังทำงานในโครงการใหม่ซึ่งจะสืบค้นข้อมูลจาก API REST ของบุคคลที่สาม นี่เป็นฟีดข้อมูลกีฬาแบบเรียลไทม์ดังนั้นฟีดจะใช้งานได้เฉพาะเมื่อมีเกมเกิดขึ้นจริง แม้ว่าบุคคลที่สามจะให้เอกสารที่ดี (XSD ฯลฯ ) พวกเขาไม่มีวิธีจำลองเกมที่เกิดขึ้นและเพื่อทดสอบรหัสที่ฉันเขียนกับ API นี้ฉันจะต้องรอให้เกมเกิดขึ้นจริง การขอความช่วยเหลือเพียงอย่างเดียวของฉันคือการเขียนรหัสเพื่อจำลองเกมด้วยตัวเอง แต่ดูเหมือนว่าจะทำงานได้มากมาย คุณจะเข้าใกล้สิ่งนี้อย่างไร
13 api  rest 

2
RESTful API ควรให้ข้อมูลสำหรับทั้งฟอร์มหรือไม่
สมมติว่าฉันมีเว็บแอปพลิเคชัน JavaScript ซึ่งใช้ RESTful API สำหรับข้อมูลทั้งหมด สมมติว่าแอปพลิเคชันนี้มีฟอร์มข้อมูลและสมมติว่าฉันกำลังแก้ไขระเบียนที่ / product / 12345 เมื่อสร้างแบบฟอร์มฉันขอ RESTful ให้กับ / product / 12345 และรับข้อมูล JSON: { "id": 12345, "name": "Some Product", "active": true, "sales_user_id": 27 } ดังนั้นแบบฟอร์มของฉันอาจมีรายการแบบเลื่อนลงสำหรับการเลือกพนักงานขาย ฉันต้องการเติมรายการนี้ ข้อมูลควรมาจากไหน วิธีที่พบมากที่สุดคืออะไร มันจะสมเหตุสมผลไหมที่จะทำให้มันเป็นส่วนหนึ่งของการตอบสนองคำขอ / product / 12345 { "id": 12345, "name": "Some Product", "active": true, "sales_user_id": 27, …
13 api  rest  forms 

5
ปรับสมดุลการพึ่งพาการฉีดด้วยการออกแบบ API สาธารณะ
ฉันได้ไตร่ตรองถึงวิธีการสร้างความสมดุลให้กับการออกแบบที่ทดสอบได้โดยใช้การฉีดแบบพึ่งพาและการให้ API สาธารณะคงที่แบบง่าย ขึ้นเขียงของฉันคือ: ผู้คนต้องการทำสิ่งที่ชอบvar server = new Server(){ ... }และไม่ต้องกังวลเกี่ยวกับการสร้างการอ้างอิงจำนวนมากและกราฟของการอ้างอิงที่ a Server(,,,,,,)อาจมี ในขณะที่กำลังพัฒนาฉันไม่ต้องกังวลมากเกินไปเพราะฉันใช้กรอบ IoC / DI เพื่อจัดการทุกอย่าง (ฉันไม่ได้ใช้แง่มุมการจัดการวงจรชีวิตของคอนเทนเนอร์ใด ๆ ซึ่งจะทำให้สิ่งต่าง ๆ ยุ่งยากมากขึ้น) ตอนนี้การพึ่งพาไม่น่าจะนำมาใช้ใหม่ การแยกชิ้นส่วนในกรณีนี้เกือบหมดจดสำหรับการทดสอบ (และการออกแบบที่เหมาะสม!) แทนที่จะสร้างตะเข็บเพื่อขยาย ฯลฯ คนจะ 99.999% ของเวลาที่ต้องการใช้การกำหนดค่าเริ่มต้น ดังนั้น. ฉันสามารถ hardcode การอ้างอิง ไม่ต้องการทำอย่างนั้นเราแพ้การทดสอบของเรา! ฉันสามารถสร้างคอนสตรัคเตอร์เริ่มต้นพร้อมการอ้างอิงแบบฮาร์ดโค้ดและตัวอ้างอิงที่ขึ้นต่อกัน นั่นคือ ... ยุ่งและมีแนวโน้มที่จะสับสน แต่ทำงานได้ ฉันสามารถสร้างการพึ่งพาที่ได้รับภายในตัวสร้างและทำให้หน่วยของฉันทดสอบการชุมนุมเพื่อน (สมมติว่า C #) ซึ่งเป็นที่สาธารณะ API สาธารณะ แต่ทิ้งกับดักซ่อนน่ารังเกียจที่ซุ่มซ่อนสำหรับการบำรุงรักษา การมีคอนสตรัคเตอร์สองตัวที่เชื่อมต่อโดยนัยมากกว่าการออกแบบที่ไม่ดีโดยทั่วไปในหนังสือของฉัน …
13 c#  api 

1
Open Data Protocol (odata) ได้รับการยอมรับอย่างกว้างขวางจากชุมชนการพัฒนาหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว แก้ไข: ในกรณีที่คุณไม่คุ้นเคยกับ odata ไปเลย ฉันกำลังพยายามที่จะตรวจสอบว่ามันคุ้มค่าที่จะเรียนรู้เทคโนโลยีนี้หรือว่ามันเป็นสิ่งที่จะไม่ติด สถานที่ตั้งเป็นที่น่าสนใจและในฐานะผู้พัฒนา API ดูเหมือนว่าเป็นวิธีที่ดีในการมอบความยืดหยุ่นให้กับผู้พัฒนาที่ใช้งานพวกเขา น่าเสียดายที่ฉันไม่เห็น "ฉวัดเฉวียน" มากเกี่ยวกับ Open Data Protocol ในช่วงสองสามปีที่ผ่านมาดังนั้นเพียงแค่พยายามที่จะประเมินว่ามันมีโอกาสที่จะอยู่ใกล้ ๆ เมื่อฉันเรียนรู้ ขอบคุณล่วงหน้า.

1
การตรวจสอบสิทธิ์ API โทเค็น VS โทเค็นแบบไดนามิกครั้งเดียว
เรากำลังทำงานในโครงการใหม่เราเป็นผู้นำในการพัฒนาสองคนและได้ข้ามทางไปถึงวิธีการใช้โทเค็นเพื่อรักษาความปลอดภัยการสื่อสารระหว่างเซิร์ฟเวอร์และไคลเอนต์ คำแนะนำแรก: (โทเค็น AKA แบบคงที่หนึ่งครั้ง) ลูกค้าร้องขอโทเค็นหลักโดยการส่งชื่อผู้ใช้และรหัสผ่านและ current_time (ตัวแปรนี้จะถูกบันทึกไว้ในฐานข้อมูลของเซิร์ฟเวอร์และฝั่งไคลเอ็นต์ด้วย) ไปยัง api เซิร์ฟเวอร์ตีความอินพุตและแสดงโทเค็นที่ถูกแฮช (เช่น: 58f52c075aca5d3e07869598c4d66648) บันทึกไว้ในฐานข้อมูลและส่งคืนไปยังไคลเอนต์ ตอนนี้ไคลเอนต์จะบันทึกโทเค็นหลักและสร้างโทเค็นแฮชใหม่โดยใช้โทเค็นหลัก + ตัวแปร current_time ที่ส่งในคำขอการตรวจสอบสิทธิ์ (ให้เรียกโทเค็นใหม่นี้ว่า main_token) ด้วยเซิร์ฟเวอร์ทำเหมือนกันและสร้างโทเค็นเดียวกัน . ทุกครั้งที่ลูกค้าสอบถามเซิร์ฟเวอร์ API มันจะส่ง main_token ไปยังเซิร์ฟเวอร์ตอนนี้เซิร์ฟเวอร์จะเปรียบเทียบโทเค็นที่สร้างในนั้นโดยที่ main_token ส่งมาจากลูกค้าหากตรงกับมันหมายความว่าผู้ใช้เป็นของจริง คำแนะนำที่สอง: (โทเค็นไดนามิก) ไคลเอนต์สร้างสองคีย์สุ่ม ($ key1 = rand (10,000,90000); $ key2 = แรนด์ (10,000,90000);) ในแต่ละคำขอบน API ลูกค้าจะสร้างแฮชโดยใช้ประเภทคิวรีและสองคีย์ด้วย อัลกอริทึมที่ซับซ้อนและส่งสองคีย์เหล่านี้ + แฮชไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์ที่ใช้อัลกอริทึมเดียวกับที่ใช้ในไคลเอนต์สร้างแฮชและเปรียบเทียบกับเซิร์ฟเวอร์ที่ส่งโดยไคลเอนต์หากตรงกับเซิร์ฟเวอร์จะจัดการกับแบบสอบถาม …
13 security  api 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.