feign が呼び出されると、クライアントはリクエストを取得し、サーバーはそれを get リクエストとして受け入れますが、実行リクエストはエラーを報告します。メソッドが許可されていません
: リクエスト メソッド 'POST' はサポートされていません。
1. 偽のクライアント
@GetMapping(“/list”)
Result<?> queryPageList(SystemAccountBookDetail systemAccountBookDetail,
@RequestParam(name = “pageNo”,defaultValue = “1”) Integer pageNo,
@RequestParam(name = “pageSize”,defaultValue = “10”)整数 pageSize) {
return sysAccountBookDetailService.queryPageList(systemAccountBookDetail,pageNo,pageSize);
}
2. 偽サーバー
@Component
@FeignClient(value = FeignConstant.OCP_CLOUD_SYSTEM, fallbackFactory = AccountAPIFallbackFactory.class)
public interface AccountApi {
@GetMapping(value = "/account/accountBookDetail/list")
Result<?> accountBookDetailPageList(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
SystemAccountBookDetail systemAccountBookDetail);
}
理由: SystemAccountBookDetail オブジェクトが使用されているため、擬似呼び出しでは get/post リクエストであるかどうかを識別できないため、強制的に post リクエストとなり、エラーが発生します。 Method Not allowed: Request method 'POST'サーバー側ではサポートされていません
解決策: これを解決するには、偽サーバー API に @SpringQueryMap アノテーションを追加します。アノテーションの機能は、エンティティをフォーム データに変換することです。
次のように:
@Component
@FeignClient(value = FeignConstant.OCP_CLOUD_SYSTEM, fallbackFactory = AccountAPIFallbackFactory.class)
public interface AccountApi {
@GetMapping(value = "/account/accountBookDetail/list")
Result<?> accountBookDetailPageList(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
SystemAccountBookDetail systemAccountBookDetail);
}