Rumah > Java > Ubah suai RequestBody dalam gerbang musim bunga

Ubah suai RequestBody dalam gerbang musim bunga

WBOY
Lepaskan: 2024-02-09 19:15:08
ke hadapan
467 orang telah melayarinya

Editor PHP Apple memperkenalkan anda cara mengubah suai RequestBody dalam Gerbang Spring. Spring Gateway ialah gerbang API berdasarkan rangka kerja Spring, digunakan untuk memproses dan memajukan permintaan HTTP. Dalam Spring Gateway, RequestBody digunakan untuk menerima data badan permintaan yang dihantar oleh pelanggan. Jika anda perlu mengubah suai RequestBody, anda boleh melakukannya melalui penapis tersuai atau pemintas. Mula-mula, anda perlu membuat penapis tersuai atau pemintas, dan kemudian dapatkan data badan permintaan dalam penapis atau pemintas dan ubah suainya. Akhir sekali, data yang diubah suai ditetapkan semula ke badan permintaan untuk pemprosesan seterusnya. Dengan cara ini, RequestBody boleh diubah suai dalam Spring Gateway.

Kandungan soalan

Saya ingin mengubahsuai badan permintaan sebelum menghalakannya ke uri yang diberikan. Berdasarkan dokumentasi yang saya gunakan

org.springframework.cloud.gateway.filter.factory.rewrite.modifyrequestbodygatewayfilterfactory Ubah suai teks. Apabila memulakan pelayan saya, pelayan gagal bermula dengan ralat berikut Punca: Elemen [spring.cloud.gateway.routes[0].filters[0].modifyrequestbody.class] tidak terikat. nn operasi: nn kemas kini konfigurasi aplikasi n", "konteks": "nilai lalai"}

Di bawah ialah penapis sampel dan fungsi tulis semula

65bee659f312a

Berikut ialah fungsi yang ditulis semula

65bee659f313a

Berikut ialah yaml

routes:
        - id: order-route-1
          uri: http://localhost:8999/
          predicates:
            - Path=/some/path1
            - Method=POST
          filters:
            - ModifyRequestBody:
                class: com.xyz.filters.SomeFilter
                value: application/json, application/xml
                enabled: true
Salin selepas log masuk

Penyelesaian

Terdapat beberapa isu dengan kod anda:

  1. Tak perlu somefilter 类,只需直接从路由配置中使用 modifyrequestbody 即可。如果你确实需要它来实现 modifyrequestbody Yang tak boleh, kena buat kacang dengan tambah @komponen.
  2. Sintaks konfigurasi yaml anda tidak betul. Sila rujuk versi semakan di bawah:
      routes:
        - id: order-route-1
          uri: http://localhost:8999/
          predicates:
            - path=/some/path1
            - method=post
          filters:
            - name: modifyrequestbody
              args:
                inclass: com.xyz.filters.oldtype
                outclass: com.xyz.filters.newtype
                rewritefunction: com.xyz.filters.myrewritefunction
                contenttype: application/json
Salin selepas log masuk
  • inclass: Nama kelas yang layak sepenuhnya mewakili struktur badan permintaan asal.

  • outclass: Mewakili nama kelas yang layak sepenuhnya bagi struktur badan permintaan yang diubah suai.

  • rewritefunction: Merujuk kepada nama kelas yang layak sepenuhnya yang melaksanakan antara muka fungsi tulis semula, yang digunakan untuk menukar badan permintaan daripada jenis asal kepada jenis baharu.

  • contenttype (pilihan): Tentukan parameter ini apabila anda ingin menukar jenis kandungan yang diminta.

Andaikan anda ingin menukar oldtype kepada newtype, berikut ialah pelaksanaan oldtype 转换为 newtype,下面是 rewritefunction:

public class MyRewriteFunction implements RewriteFunction<OldType, NewType> {

    @Override
    public Publisher<NewType> apply(ServerWebExchange exchange, OldType originalRequest) {
     
        NewType modifiedRequest = modifyRequest(originalRequest);
        return Mono.just(modifiedRequest);
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Ubah suai RequestBody dalam gerbang musim bunga. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan