Cara menetapkan token kebenaran OAuth dalam klien typescript-jquery yang dijana dari Swagger


Saya telah menghasilkan pautan untuk API yang ditakrifkan oleh Swagger yang memerlukan token OAuth.

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

Tetapi bagi saya, nampaknya pengepala telah dikodkan secara tetap dalam kod yang dihasilkan.

Adakah terdapat cara untuk menetapkan pengepala kebenaran tanpa mengubah kod yang dijana?

Jawapan #1

Tidak pasti sama ada ini cara terbaik, atau yang disyorkan tetapi saya berjaya mengatasi had api yang jelas dengan menetapkan header dalam jquery sebelum memanggil SDK yang dijana.

jquery.ajaxSettings.headers = { ... }

Nampaknya apabila securityDefinitions diberikan, seperti yang dinyatakan dalam satu komen, penjana akan mengambil kira token dalam konfigurasi: https://github.com/swagger-api/swagger-codegen/blob/2.3.0_BACKUP_ONLY/modules/swagger-codegen/src/main/resources/typescript-jquery/api.mustache#L174

Sebahagian daripada masalahnya adalah ia tidak mungkin menggunakan pengikatan typescript-jquery sama sekali, kod yang dijana kelihatan seperti:

    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();

Sementara pendapat saya yang baru mengenai topik ini adalah bahawa ia sepatutnya kelihatan lebih seperti:

    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();

Memandangkan bahawa tandatangan kaedah yang dihasilkan adalah:

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

Tidak pasti mengenai bahagian reject, tetapi kedua-dua penyusun dan intellisense lebih gembira.