The client consistently makes requests with the accept header of 'application/json' and content-type of 'application/json'
 Sì, questa è la cosa giusta da fare, ma non significa che il venditore si preoccupi. Mentre capisco perfettamente la tua frustrazione, perché penso anche che un servizio JSON dovrebbe sempre dare una risposta JSON, ma ci sono molti esempi in cui non è il caso. 
  Throughout the project this same practice has been applied across two different vendors and two different services. I found myself having to justify why the services needed to be changed. The vendors stated that the client should cope with this and even my REST library of choice has been questioned (RestEasy) because it doesn't cope with this by default 'out the box'.
 Bene, devo essere d'accordo con il venditore. È il loro servizio e finché documentano chiaramente i casi speciali per usarlo, allora non si può davvero imporre che lo cambino. È uno svantaggio per loro dato che gli sviluppatori saranno lenti nell'adottare le loro API e, se ascoltassero ciò di cui hanno bisogno gli sviluppatori, lo cambierebbero, ma purtroppo non c'è alcuna regola che loro debbano seguire gli standard. 
  The question is am I missing something?
 Le intestazioni di richieste non significano nulla a meno che non vengano interrotte correttamente dall'altra parte. So che se sviluppo un'API web utilizzando PHP, allora al diavolo le intestazioni delle richieste. Posso rispondere con quello che voglio. Mentre un servizio configurato in IIS con C # offre una gestione molto più semplice delle intestazioni delle richieste, del loro tipo e della gestione del tipo di risposta. Ha molto a che fare con gli strumenti utilizzati dal venditore per costruire l'API. 
  I'm I being pedantic about this?
 Sì e No. Ho amici sviluppatori che non sarebbero in grado di superare questo. Diventerebbero così fissi dal problema e incapaci di procedere con altre attività finché l'API non funzionasse nel modo in cui si aspettavano che funzionasse. Ora è pedante. 
 È un problema perché il venditore ha creato "più lavoro" per completare le tue attività. Chiunque sarebbe frustrato da questo. So che lo sarei. 
  Is it OK to have a JSON API that doesn't have a content-type of application/json in this scenario?
 Assolutamente, ma non è una buona pratica. 
 Un client può solo dire al server qual è il tipo di contesto di   request   . Non ha la capacità di imporre un tipo di contenuto per   response   . Il client può solo informare il server che sarà   accept    una raccolta di possibili tipi di contenuto. 
  Definizioni dei campi di intestazione  
  
    The Accept request-header field can be used to specify certain media types which are acceptable for the response. Accept headers can be used to indicate that the request is specifically limited to a small set of desired types, as in the case of a request for an in-line image.
  
 È possibile che un cliente richieda un'immagine di   image/jpeg   , ma le risposte del server con   text/html    e un codice di stato di   404    se l'immagine non è stata trovata. I server possono anche rispondere in modo errato. Esistono molti siti Web Wordpress che rispondono con   text/html    e codice di stato   200    per le pagine file non trovate. 
 Questa è la pratica  BAD  sulla parte del server. Quello che sto cercando di dirti è che è assolutamente possibile, e succede spesso. Le persone non sanno cosa stanno facendo quando configurano queste cose. 
  References would be appreciated. How do you resolve this situation from a commercial point of view?
 Ho incontrato questo problema su alcuni progetti. Hai   post    di dati JSON sul server e restituisce una risposta JSON o HTML. 
 In realtà non è un grosso problema sapere quale tipo era nella risposta. Se il primo carattere è   {    o   [    puoi assumere JSON. Se è   <    puoi assumere HTML. È così che l'ho gestito in passato. A volte il programmatore che ha scritto l'API sa tutto riguardo le intestazioni HTTP. Tutto torna come   text/html    risposte. Se sei fortunato hanno Apache configurato per default su   text/plain    che a volte può aiutare. 
 Questi problemi esistono e continueranno a esistere molto nel futuro. La comunicazione da server a server è di gran lunga un'attività non regolamentata. Non esiste un ente governativo che esca un fornitore da un sindacato per un server che fornisce risposte HTTP sbagliate.