Aws-lambda-dotnet: Dokumen angkuh terekspos saat berintegrasi dengan gerbang api

Dibuat pada 30 Jan 2018  ·  22Komentar  ·  Sumber: aws/aws-lambda-dotnet

Halo kawan-kawan,

Saya memiliki .net core web api yang memiliki dokumen integrasi swagger sendiri yang diekspos melalui titik akhir "swagger/v1/swagger.json". Ini digunakan sebagai lambda. Saya juga telah menyiapkan gateway api yang terintegrasi dengan lambda ini untuk mengekspos semua apis.

Masalah yang saya miliki adalah saya tidak dapat mengakses dokumen swagger melalui url /swagger. Itu selalu mengembalikan "pesan: terlarang". Saya pasti dapat mengakses kesombongan jika saya menjalankan api web secara lokal.

Ada ide?

Terima kasih

Jason

guidance

Komentar yang paling membantu

Saya juga mengalami masalah yang sama. Punya solusi-
Pastikan Anda telah menambahkan tahap dalam nama di file startup seperti yang ditunjukkan di bawah ini. di mana Prod adalah nama panggung saya.

app.UseSwaggerUI(c =>
              {
                  c.SwaggerEndpoint("/Prod/swagger/v1/swagger.json", "GST Console API - V1");

              });

Meminta @normj untuk menutup ini.

Semua 22 komentar

Bisakah Anda membuat repositori repo sederhana untuk saya lihat?

Saya mengalami masalah yang sama.

Apakah Anda membuat kemajuan dengan @jasondaicoder ini?

Masalah yang sama, harap perbarui jika Anda menemukan perbaikan. Saya dapat mengakses json secara langsung, misalnya .. https://...../Prod/swagger/v1/swagger.json . Karena API Gateway mendukung kesombongan, sedang memikirkan sesuatu yang ajaib tentang jalur "sombong". Tapi, menggunakan info dari halaman ini, http://eatcodelive.com/2017/05/19/change-default-swagger-route-in-an-asp-net-core-web-api/ , saya mengubahnya menjadi "swag" dan masih memiliki masalah yang sama.

Menarik, ketika Anda mengakses https://..../Prod/swagger itu mengarahkan Anda ke https://.../swagger , pada dasarnya menghapus bagian panggung dari jalur dan kembali ke root, yang kemudian menghasilkan pesan dilarang.

Tidak benar-benar teman-teman. Saya pikir itu bisa jadi karena gerbang api seharusnya bertindak hanya untuk api web tetapi tidak untuk terkait UI. Saya berakhir dengan meng-hosting UI di tempat lain tetapi menunjuk ke file json angkuh dari proyek melalui gateway api. Berhasil.

Terima kasih. Hmm, agak sakit untuk melakukan ini :) Saya memiliki pengontrol rumah MVC biasa dan halaman Indeks sebagai bagian dari penyebaran saya dan berfungsi dengan baik. Ya, saya baru saja membaca sebuah posting di mana seseorang berpikir mungkin terkait dengan di mana responsnya bukan json, tetapi halaman Indeks saya berfungsi dengan baik.

Dengan solusi saya, Anda sebenarnya hanya perlu menerapkan UI sekali. Selama Anda memuat file json dari proyek Anda, Anda tidak perlu melakukan apa pun lagi. Kami meng-host file UI di S3. Mungkin tim AWS dapat memperbaiki masalah ini nanti.

menarik.. Anda dapat menggunakan .net core ui di S3 tanpa menjalankan kestrel? pikir kesombongan itu agak runtime dan diperlukan untuk mendukung dll yang sedang berjalan dll, misalnya bukan hanya satu set file statis

@normj , proyek ini hanya c# weapi biasa dengan titik masuk Lamdba. Tidak ada yang benar-benar istimewa. Saya akan mencoba membuat repositori sampel di GitHub nanti. Sejujurnya saya tidak berpikir ada yang salah dengan proyek saya karena orang lain mengalami masalah yang sama. Saya pikir itu bisa menjadi beberapa konflik dengan dokumen angkuh bawaan gerbang api.

@rslangham tidak, Anda tidak perlu menerapkan proyek Anda. Yang Anda butuhkan hanyalah mengunduh file statis ui angkuh yang bisa Anda dapatkan dari situs angkuh (mungkin tautan ke GitHub yang dapat Anda temukan di situs angkuh).

@jasondaicoder terima kasih atas sarannya untuk menggunakan file statis ui angkuh. Saya melakukan ini menggunakan implementasi yang berbeda dan berhasil. Saya mengunduh file ui swagger dan meletakkannya di bawah proyek saya wwwroot/swaggerui. Di Startup.cs Configure(..) saya mengaktifkan akses file statis, misalnya app.UseStaticFiles. Saya memodifikasi javascript tersemat swagger ui index.html untuk menggunakan window.location.href untuk mengubah url secara dinamis ke jalur yang benar untuk json angkuh, ini memungkinkannya untuk digunakan di mana saja dan berfungsi.

Benar-benar ingin mengetahui solusi yang benar :) Terima kasih lagi.

Halo, saya mengalami masalah yang sama persis, saya harap ini segera teratasi.

Mengamati masalah yang sama juga.

Saya juga mengalami masalah yang sama. Punya solusi-
Pastikan Anda telah menambahkan tahap dalam nama di file startup seperti yang ditunjukkan di bawah ini. di mana Prod adalah nama panggung saya.

app.UseSwaggerUI(c =>
              {
                  c.SwaggerEndpoint("/Prod/swagger/v1/swagger.json", "GST Console API - V1");

              });

Meminta @normj untuk menutup ini.

@AnandKhedkar yang bekerja untuk saya terima kasih

Saya juga mengalami masalah yang sama. Punya solusi-
Pastikan Anda telah menambahkan tahap dalam nama di file startup seperti yang ditunjukkan di bawah ini. di mana Prod adalah nama panggung saya.

app.UseSwaggerUI(c =>
              {
                  c.SwaggerEndpoint("/Prod/swagger/v1/swagger.json", "GST Console API - V1");

              });

Meminta @normj untuk menutup ini.

Itu memang muncul di halaman Index.html. Namun, itu tidak mengizinkan eksekusi layanan melalui antarmuka angkuh untuk saya.
Jalur di URL Permintaan untuk panggilan GET mengecualikan Prod lagi.
Namun saya, menggunakan c.RoutePrefix = string.Empty; untuk merender halaman di root alih-alih menambahkan /swagger.

Apakah ada properti yang dapat disetel sehingga ini akan tetap konsisten di semua referensi url relatif?

Saya juga mengalami masalah yang sama. Punya solusi-
Pastikan Anda telah menambahkan tahap dalam nama di file startup seperti yang ditunjukkan di bawah ini. di mana Prod adalah nama panggung saya.

app.UseSwaggerUI(c =>
              {
                  c.SwaggerEndpoint("/Prod/swagger/v1/swagger.json", "GST Console API - V1");

              });

Meminta @normj untuk menutup ini.

Itu memang muncul di halaman Index.html. Namun, itu tidak mengizinkan eksekusi layanan melalui antarmuka angkuh untuk saya.
Jalur di URL Permintaan untuk panggilan GET mengecualikan Prod lagi.
Namun saya, menggunakan c.RoutePrefix = string.Empty; untuk merender halaman di root alih-alih menambahkan /swagger.

Apakah ada properti yang dapat disetel sehingga ini akan tetap konsisten di semua referensi url relatif?

Diselesaikan dengan solusi ini Bekerja dengan sempurna dan bahkan menunjukkan jalur dasar di header halaman angkuh.

Menutup karena sepertinya solusi telah ditemukan.

Saya juga mengalami masalah yang sama. Punya solusi-
Pastikan Anda telah menambahkan tahap dalam nama di file startup seperti yang ditunjukkan di bawah ini. di mana Prod adalah nama panggung saya.

app.UseSwaggerUI(c =>
              {
                  c.SwaggerEndpoint("/Prod/swagger/v1/swagger.json", "GST Console API - V1");

              });

Meminta @normj untuk menutup ini.
Di file mana untuk mendefinisikan ini.

Saya juga mengalami masalah yang sama. Punya solusi-
Pastikan Anda telah menambahkan tahap dalam nama di file startup seperti yang ditunjukkan di bawah ini. di mana Prod adalah nama panggung saya.

app.UseSwaggerUI(c =>
              {
                  c.SwaggerEndpoint("/Prod/swagger/v1/swagger.json", "GST Console API - V1");

              });

Meminta @normj untuk menutup ini.

ini berhasil untuk saya.
Terima kasih

Saya mengalami masalah yang sama; tetapi HARDCODING PROD (nama panggung) ke dalam kode BUKAN PILIHAN Apakah ada cara untuk mengidentifikasi tahap penyebaran gateway API apa yang dijalankan oleh lambda? var lingkungan AWS atau apa?

@grahamehorner Inilah yang saya lakukan untuk menyelesaikan masalah tanpa hardcoding. Ini berfungsi di mesin lokal saya dan di Lambda

app.UseSwaggerUI(c =>
{
  c.SwaggerEndpoint("v1/swagger.json", "GST Console API - V1");
});

Pada dasarnya cukup atur titik akhir dengan c.SwaggerEndpoint() menggunakan url jalur relatif tanpa "swagger" dan memimpin "/".

Jika kami menyediakan url jalur relatif tanpa mengarahkan "/" ke c.SwaggerEndpoint() , url titik akhir absolut akan berasal

AWS Serverless Url + "/" + c.RoutePrefix + "/" + the supplied url

di mana c.RoutePrefix diatur ke 'swagger' secara default

Misalnya, jika Url Tanpa Server AWS Anda adalah ' https://xyz.central.amazonaws.com/Prod ', url absolut Anda akan menjadi ' https://xyz.central.amazonaws.com/Prod/swagger/v1/swagger .json '

Apakah halaman ini membantu?
0 / 5 - 0 peringkat