タグ付けされた質問 「rest」

REST(Representational State Transfer)は、World Wide Webなどの分散ハイパーメディアシステム用のソフトウェアアーキテクチャのスタイルです。異種システム間で統一されたインターフェースを持つことから生じるサーバーからのクライアントの本質的な分離により、SOAPなどのRPCアーキテクチャーに比べて人気が高まっています。

4
SpringBootとSpringSecurityでRESTAPIを保護する方法は?
REST APIの保護が広くコメントされているトピックであることは知っていますが、自分の基準を満たす小さなプロトタイプを作成できません(そして、これらの基準が現実的であることを確認する必要があります)。リソースを保護する方法やSpringセキュリティをどのように使用するかについては、非常に多くのオプションがあります。自分のニーズが現​​実的かどうかを明確にする必要があります。 私の要件 トークンベースのオーセンティケーター-ユーザーはその資格情報を提供し、一意で時間制限のあるアクセストークンを取得します。トークンの作成、有効性の確認、有効期限を自分の実装で管理したいと思います。 一部のRESTリソースは公開されます-認証する必要はまったくありません、 一部のリソースには、管理者権限を持つユーザーのみがアクセスできます。 他のリソースは、すべてのユーザーの承認後にアクセスできるようになります。 基本認証を使いたくない Javaコード構成(XMLではない) 現在の状態 私のRESTAPIは非常にうまく機能しますが、今度はそれを保護する必要があります。解決策を探していたときに、javax.servlet.Filterフィルターを作成しました。 @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; String accessToken = request.getHeader(AUTHORIZATION_TOKEN); Account account = accountDao.find(accessToken); if (account == null) { throw new UnauthorizedException(); } chain.doFilter(req, res); } しかし、Springjavax.servlet.filtersを介した例外処理に問題があるため、このソリューションは必要に応じて機能しません。@ControllerAdviceservlet …

2
カスタムエンドポイントで既存のAPIを拡張する
複数のお客様向けのAPIを作成しています。のようなコアエンドポイント/usersはすべてのお客様が使用しますが、一部のエンドポイントは個別のカスタマイズに依存しています。したがって、ユーザーAが特別なエンドポイントを必要/groupsとしており、他の顧客がその機能を持たない可能性があります。補足として、これらの追加機能のために、各顧客は自分のデータベーススキーマも使用します。 私は個人的にNestJ(内部ではExpress)を使用しています。したがって、app.module現在すべてのコアモジュールが登録されています(独自のエンドポイントなどで) import { Module } from '@nestjs/common'; import { UsersModule } from './users/users.module'; // core module @Module({ imports: [UsersModule] }) export class AppModule {} この問題はNestJとは関係がないと思うので、理論的にはどのように対処しますか? 基本的に、基本的なシステムを提供できるインフラストラクチャが必要です。各拡張は一意であり、複数の/users実装が可能であるため、コアエンドポイントはもうありません。新しい機能を開発するときは、コアアプリケーションに触れないでください。拡張機能はそれ自体を統合するか、起動時に統合する必要があります。コアシステムはエンドポイントなしで出荷されますが、これらの外部ファイルから拡張されます。 いくつかのアイデアが思い浮かびます 最初のアプローチ: 各拡張機能は新しいリポジトリを表します。すべての拡張プロジェクトを保持するカスタム外部フォルダーへのパスを定義します。このカスタムディレクトリにはgroups、groups.module import { Module } from '@nestjs/common'; import { GroupsController } from './groups.controller'; @Module({ controllers: [GroupsController], }) export class GroupsModule {} …

3
コントローラに入った後のモデルの動的バインディングの遅延バインディング
コントローラでアクションを開始した後にモデルを解決する方法を探しています。問題を説明する最も簡単な方法は次のとおりです。 public DTO[] Get(string filterName) { //How can I do this this.Resolve<MyCustomType>("MyParamName"); } あなたがなぜ私がそうしようとしているのかについての詳細を探しているなら、あなたは全体像を取得するために読み続けることができます TL; DR クエリ文字列から常に解決されるパラメーター名を指定して、モデルをリクエストを解決する方法を探しています。スタートアップからフィルターを動的に登録するにはどうすればよいですか。フィルターの登録を処理するクラスがあります。 私のスタートアップクラスでは、restServicesにフィルターを動的に登録できるようにしたいと考えています。大体次のようなカスタムControllerFeatureProviderに渡すために使用するオプションがあります。 public class DynamicControllerOptions<TEntity, TDTO> { Dictionary<string, Func<HttpContext, Expression<Func<TEntity, bool>>>> _funcNameToEndpointResolverMap = new Dictionary<string, Func<HttpContext, Expression<Func<TEntity, bool>>>>(); Dictionary<string, List<ParameterOptions>> _filterParamsMap = new Dictionary<string, List<ParameterOptions>>(); public void AddFilter(string filterName, Expression<Func<TEntity, bool>> filter) { this._funcNameToEndpointResolverMap.Add(filterName, …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.