ค้นหาเว็บไซต์

วิธีตั้งค่าโทเค็นการอนุญาต OAuth ในไคลเอนต์ typescript-jquery ที่สร้างจาก Swagger


ฉันได้สร้างการเชื่อมโยงสำหรับ API ที่กำหนดโดย Swagger ซึ่งต้องการโทเค็น OAuth แล้ว

swagger-codegen generate -i api.json -o test -l typescript-jquery

แต่ดูเหมือนกับว่าหัวเรื่องถูกเขียนไว้คงที่ในโค้ดที่สร้างขึ้น

มีวิธีใดในการตั้งค่า header การอนุญาตโดยไม่ต้องแก้ไขโค้ดที่สร้างขึ้นหรือไม่?

คำตอบ #1

ไม่แน่ใจว่านี่เป็นวิธีที่ดีที่สุดหรือวิธีที่แนะนำหรือไม่ แต่ฉันได้หาทางแก้ไขข้อจำกัดของ API ที่เห็นได้โดยการตั้งค่า headers ใน jquery ก่อนเรียกใช้ SDK ที่สร้างขึ้น

jquery.ajaxSettings.headers = { ... }

ดูเหมือนว่าเมื่อมีการให้ securityDefinitions ตามที่ระบุในความคิดเห็น ตัวสร้างจะพิจารณาโทเค็นในการกำหนดค่า: https://github.com/swagger-api/swagger-codegen/blob/2.3.0_BACKUP_ONLY/modules/swagger-codegen/src/main/resources/typescript-jquery/api.mustache#L174

ส่วนหนึ่งของปัญหาคือไม่สามารถใช้การผูก typescript-jquery ได้เลย โค้ดที่สร้างขึ้นจะมีลักษณะดังนี้:

    let dfd = $.Deferred();
    $.ajax(requestOptions).then(
        (data: models.Operation, textStatus: string, jqXHR: JQueryXHR) =>
            dfd.resolve(jqXHR, data),
        (xhr: JQueryXHR, textStatus: string, errorThrown: string) =>
            dfd.reject(xhr, errorThrown)
    );
    return dfd.promise();

ในขณะที่ความเห็นของฉันซึ่งเพิ่งเริ่มสนใจเรื่องนี้ คือมันควรจะดูเหมือนมากกว่า:

    let dfd = $.Deferred();
    $.ajax(requestOptions).then(
        (data: models.Operation, textStatus: string, jqXHR: JQueryXHR) =>
            dfd.resolve({ request: jqXHR, body: data }),
        (xhr: JQueryXHR, textStatus: string, errorThrown: string) =>
            dfd.reject({ request: xhr, body: errorThrown})
    );
    return dfd.promise();

เนื่องจากลายเซ็นของวิธีที่สร้างขึ้นคือ:

public someMethod(): JQueryPromise<{ response: JQueryXHR; body: models.Operation;  }>

ไม่แน่ใจเกี่ยวกับส่วน reject แต่ทั้งตัวคอมไพเลอร์และอินเทลลิเซนส์ดูมีความสุขมากขึ้น