Esecuzione di una richiesta HTTP per una risposta senza un layout

0

Sto creando un'applicazione in cui il front-end può visualizzare risorse sia come se stessi che all'interno di una modale. Ovviamente, quando il server riceve una richiesta di una risorsa in HTML, includerà un layout (con <head> , magari un'intestazione e un piè di pagina nel corpo e così via). Tuttavia, se voglio una modale con le informazioni sulle risorse, non ho bisogno di quel layout.

Come dovrei chiedo al server di servirmi la sua risorsa con o senza una risorsa?

Dubito che qualcosa sia già presente nelle intestazioni standardizzate, ma esiste una tecnica antecedente sulla standardizzazione di quel tipo di comportamento?

Dopo un po 'di riflessione, suppongo che le informazioni su quella richiesta debbano andare nelle intestazioni. Ecco dove ho pensato che non dovrebbe andare:

  • Stringa di query : potrebbe essere passato come parametro nella stringa di query, ma la preferenza per un layout non modifica la risorsa che sto chiedendo, ma solo il suo "formato" . Ad esempio, immagina un collegamento di ancoraggio alla mia risorsa, e il front-end decide che questo dovrebbe aprire una modale, tranne che per un clic intermedio. L'URL dovrebbe rimanere lo stesso.

  • Accetta / Tipo di contenuto : il contenuto che sto cercando di ottenere è HTML (in un'istanza) e se ho o meno un layout non significa che improvvisamente indossi obbedire alle sue regole.

  • X-Requested-With header: Ovviamente, ogni volta che richiedo il contenuto di una modale in XHR, non dovrei ottenere un layout, ma cosa succede se ho uno script sul mio pagina che recupera dinamicamente una nuova pagina per sostituirla? Inoltre, l'intestazione XHR implicherebbe implicitamente il significato di non servire il layout senza che il client / richiesta abbia voce in capitolo.

Io sono principalmente alla ricerca di una tecnica antecedente per risolvere quel problema, o delle prime proposte su come potrebbe apparire, seguendo il percorso delle specifiche HTTP.

    
posta Jonathan Allard 25.05.2017 - 00:46
fonte

2 risposte

1

Non inventare le tue intestazioni. E per favore evita di utilizzare le intestazioni per individuare i contenuti che dovresti servire. Ci sono casi d'uso legittimi per questo, ma in generale questo rende il tuo back-end molto più difficile da eseguire il debug.

La pagina intera e la variante modale della pagina rappresentano la stessa risorsa, quindi si può sostenere che dovrebbero avere lo stesso URL. L'utilizzo di un parametro di query per distinguere tra diverse presentazioni sarebbe quindi più pulito, ad es. %codice%. È normale che più URL rappresentino la stessa risorsa, quindi i documenti HTML sono collegati tramite https://example.com/resource?layout=fragment se SEO è importante per il tuo progetto.

Il caricamento di frammenti HTML dal server è semplicissimo e l'ho fatto anche io. Tuttavia, mescolare gli URL per i tuoi utenti che dovrebbero essere collegabili e gli URL per il tuo JavaScript potrebbero non essere la soluzione più gestibile a lungo termine. I requisiti per questi due tipi di URL sono abbastanza diversi. Per esempio. non vuoi vedere parti della tua API interna nei risultati di ricerca di Google. Non vuoi linkare accidentalmente a un URL interno. Quindi, potrebbe essere meglio spostare tutti gli endpoint richiesti dal tuo JavaScript frontend sotto <link rel=canonical ...> . Se una tale progettazione di URL è sensibile probabilmente dipende dagli URL esistenti. Mi piacerebbe se i tuoi URL fossero più simili a pagine ( /api/ ), meno se identificano entità con azioni disponibili ( /?id=1234 offre azioni /cart e /cart/add-product ).

    
risposta data 25.05.2017 - 09:54
fonte
0

Query string: It could have gone as a parameter in the query string, but the preference for a layout does not change the resource I'm asking for, only its "format".

Vorrei contestare questo - a mio parere se è nell'HTML, fa parte della "risorsa". Potrebbe avere implicazioni di formattazione, ma questo non lo rende non la risorsa.

For example, imagine an anchor link to my resource, and the front-end decides this should open a modal, except on a middle-click. The URL should stay the same.

Perché? Se il comportamento viene interferito con riguardo al tipo di richiesta, perché l'url deve rimanere lo stesso? Quando si esegue il codice su clic e si genera la richiesta xhttp, l'aggiunta della query è banale.

In breve, andrei con l'approccio della stringa di query.

    
risposta data 25.05.2017 - 11:59
fonte

Leggi altre domande sui tag