2017-02-28 9 views
0

私はSpringブートを使用してREST APIを作成しています。ユーザーがたとえば/helpなどのリクエストを出したときに使用可能なすべてのルートのリスト(JSONとして)を返すか、私はローカルで働いているので、私の場合はlocalhost:8080です。コントローラからREST APIの利用可能なルートにアクセスするにはどうすればよいですか?

たとえば、Spring Bootアプリケーションが起動したときにログに利用可能なルートが表示されていますが、これらのルートにアクセスするにはどうすればよいか分かりません。私が言ったように、これらの空路はJSON、のようなものとして返されます:

もちろんの
{ 

    routes: [ 
     "/api/users/create", 
     "/api/users/list", 
     ... 
    ] 

} 

、また、例えば、特定のURLへのリクエストを行うために必要な追加情報を提供するとよいでしょうクライアントが特定の要求パラメータを渡す必要がある場合、どのパラメータをどの形式で使用するかを指定します。

は例えば、それは形のものになるだろう:

{ 

    "routes" : [ 
     {"route": /api/users/create", "requestParams": ["name", "age", ... ]}, 
     ... 
    ] 

} 

はい、私は私が作成したRESTサービスを使用しようとしてクライアントにドキュメントのいくつかの種類を提供し、この方法では、と思いました。

どうすればいいですか?少なくともルートにアクセスする簡単な方法はありますか?

これを行う際に問題がありますか?はいの場合は、どちらですか?

+0

スプリングブートアクチュエータは、 '/ mappings'エンドポイント経由であなたのために用意されています。詳細はこちら[こちら](http://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html)をご確認ください –

+0

@ Bond-JavaBond私はSpring Boot実際には、私が理解しているところから、開発中に実際に使用されるべきである(私がすでに使っているので)。たとえば、アプリケーションのステータスをテストすることができます。これが本当であれば、それは私が記述しているものに似たケースに使用されるとは考えられませんでしたが、アクチュエーターについてあまり知らないので間違っている可能性があります。 – nbro

+0

アクチュエータは開発用ではありません。本番環境では使用できない理由はありません。 –

答えて

1

あなたのAPIに関するドキュメントを提供するためにSwaggerを使用する可能性を考えますか?使い方が簡単で、いくつかの注釈を付けると、APIの完全なドキュメントが作成されます。 Hereスワッガーの設定方法についてのガイドがあります。それがあなたを助けることを願っています。

1

あなたはそれを注入RequestMappingHandlerMapping

を使用することができます。

@Autowired 
public RequestMappingHandlerMapping requestMappingHandlerMapping; 

を次に:

@RequestMapping("/endpoints") 
public @ResponseBody 
Object showEndpointsAction() throws SQLException 
{ 
     return requestMappingHandlerMapping.getHandlerMethods().keySet().stream().map(t -> 
       (t.getMethodsCondition().getMethods().size() == 0 ? "GET" : t.getMethodsCondition().getMethods().toArray()[0]) + " " +      
       t.getPatternsCondition().getPatterns().toArray()[0] 
     ).toArray(); 
} 

は、すべてのエンドポイントのURLパスをリストする必要があります。

関連する問題