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.
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
65bee659f312aBerikut ialah fungsi yang ditulis semula
65bee659f313aBerikut 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
Terdapat beberapa isu dengan kod anda:
somefilter
类,只需直接从路由配置中使用 modifyrequestbody
即可。如果你确实需要它来实现 modifyrequestbody
Yang tak boleh, kena buat kacang dengan tambah @komponen. 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
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); } }
Atas ialah kandungan terperinci Ubah suai RequestBody dalam gerbang musim bunga. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!