2015-03-11 13 views
12

Zastanawiam się, czy można programowo wykryć wszystkie punkty końcowe konkretnego API.Czy istnieje sposób na odkrycie wszystkich punktów końcowych interfejsu API ReST?

Tak na przykład, jeśli otrzymuję ten adres URL z przeglądarki lub zwinięcie: https://api.twitter.com/1.1/

mogę dostać coś takiego jako odpowiedź JSON:

{"TwitterAPI":{ 
    "version" : 1.1, 
    "GET" : { 
     "search/" : ["users", "trending"], 
     "users/" : ["id", "handle"] 
    } 
} 

Oczywiście Twitter mógł wybrać publikowanie lub nie publikuj tego formatu. Pytanie brzmi: czy istnieją jakieś biblioteki Java lub Javascript, które automatycznie mapują i publikują trasy API utworzone w kontrolerach?

+1

Zależy, czy producent wykonał coś w rodzaju usługi wyszukiwania, czy nie. Jeśli nie, to obawiam się, że nie możesz. –

Odpowiedz

12

Nie ma mowy o programowo odkrywanie usług REST ponieważ nie mają standardową usługę rejestru.

Oprócz robienia szaleńczych przeszukiwań, nie ma możliwości znalezienia właściwych adresów URL (nie wspominając o odpowiednich parametrach). Więc jedyną opcją jest dokumentowanie twojego API. Za to najlepszy wybór widziałem tak daleko jest:

+0

Świetna odpowiedź dzięki za referencję! Poniższa odpowiedź WADL również jest świetna, ale uważam, że te sugestie są bardziej przydatne. – 4m1r

+0

właściwie zostawię to bez odpowiedzi dla kilku i zobaczę, czy nie możemy uzyskać kilku bardziej użytecznych odpowiedzi. – 4m1r

7

Niektóre interfejsy API RESTful publikują zasób języka opisu aplikacji sieci Web (WADL - wymowy podobne do tego, co robi kaczka - w skrócie). JAX-RS, a przynajmniej Jersy Webapps zrobi to domyślnie na głównym adresie URL aplikacji/application.wadl. Nie wydaje się, że API Twittera jest jednym z nich. Wielu purystów z REST argumentowałoby, że API powinno samo się opisywać i odkrywać je po prostu poprzez interakcję z nim i zobaczenie, jakie inne punkty końcowe ci da.

More about WADL from wikipedia...

Powiązane problemy