Approccio all'esposizione ai servizi Web per versione

-1

Qual è un buon approccio per esporre i servizi web di diverse versioni sullo stesso URL? Non voglio avere URL diversi per versioni diverse, quindi posso cambiare la versione che i consumatori utilizzano dal lato server. Se la versione è nell'URL, non è opzionale e non posso fornire un valore predefinito.

Non riesco a pensare a:

  1. Inserimento di un parametro di versione nella stringa di query
  2. Inserimento di un parametro di versione nel corpo del post

Sono una di queste buone scelte o c'è un approccio diverso che dovrei prendere?

Permettimi anche di aggiungere un'altra domanda. In che modo un framework / programma eseguirà versioni diverse se risiedono in versioni JAR o EAR differenti del codice?

    
posta Learner_101 30.12.2015 - 15:45
fonte

1 risposta

1

Di solito non è una prassi comune utilizzare le intestazioni per le specifiche di versione sui servizi Web in questi giorni. La stringa di query è anche una che ho visto usata; entrambi si basano sul concetto di "default sensibile" che di solito è l'ultima versione quando non sono forniti l'intestazione o la stringa di query.

Un altro approccio può essere quello di avere versioni legate ai consumatori, quindi se hai bisogno di un token di autenticazione su tutte le richieste, insieme a usarlo per identificare chi è il consumatore, può essere usato per identificare quale versione dell'API che hanno selezionato da utilizzare. Questo approccio ha lati positivi e negativi poiché, a seconda del modo in cui i consumatori lo utilizzano, potrebbero voler utilizzare più versioni contemporaneamente (forse una chiamata desidera utilizzare una versione successiva del servizio, mentre tutte le altre chiamate sono ancora su uno più vecchio).

Sconsiglio vivamente di usare un parametro nel corpo del post perché questo richiederebbe che ogni singola richiesta fosse posta, che è una cattiva forma per REST. Tuttavia, se stai utilizzando SOAP, in realtà le intestazioni SOAP sarebbero il posto perfetto dove metterlo, poiché non puoi fare affidamento sulle intestazioni HTTP poiché SOAP può essere trasmesso via non-HTTPtransports (e-mail, TCP, MQ, ecc.) .

tl; dr

Se è REST, usa le intestazioni HTTP o la stringa di query; qual è il più facile per te. Per SOAP utilizzare le intestazioni SOAP. Se nessuna di queste opzioni è valida, direi che dovrai ricorrere al classico utilizzo di URL diversi per versioni diverse.

    
risposta data 30.12.2015 - 16:20
fonte

Leggi altre domande sui tag