Jau kādu laiku es esmu spēlējies ar JSON, vienkārši izspiežot to kā tekstu, un tas nevienam nav kaitējis (par ko es zinu), bet es gribētu sākt darīt lietas pareizi.
Esmu redzējis *tā daudzus it kā "standartus" JSON satura tipam:
application/json
application/x-javascript
text/javascript
text/x-javascript
text/x-json
Bet kurš no tiem ir pareizais vai labākais? Es saprotu, ka pastāv dažādas drošības un pārlūkprogrammu atbalsta problēmas.
Zinu, ka ir līdzīgs jautājums Kāds MIME tips, ja REST API atgriež JSON?, bet es gribētu nedaudz mērķtiecīgāku atbildi.
JSON tekstam:
application/json
MIME multivides tips JSON tekstam ir
application/json
. Noklusējuma kodējums ir UTF-8. (Avots: RFC 4627).
Attiecībā uz JSONP (izpildāms javascript) ar atgriezenisko zvanu:
ar: > application/javascript
Šeit ir daži komentāros minētie emuāru ieraksti, kas ir būtiski.
Protams, pareizais MIME multivides tips JSON ir application/json
, taču ir jāapzinās, kāda veida dati tiek gaidīti jūsu lietojumprogrammā.
Piemēram, es izmantoju Ext GWT, un servera atbildei jābūt text/html, bet tajā ir JSON dati.
Klienta puse, Ext GWT veidlapas klausītājs
uploadForm.getForm().addListener(new FormListenerAdapter()
{
@Override
public void onActionFailed(Form form, int httpStatus, String responseText)
{
MessageBox.alert("Error");
}
@Override
public void onActionComplete(Form form, int httpStatus, String responseText)
{
MessageBox.alert("Success");
}
});
Ja tiek izmantots application/json atbildes tips, pārlūkprogramma man iesaka saglabāt failu.
Servera puses avota koda fragments, izmantojot Spring MVC.
return new AbstractUrlBasedView()
{
@SuppressWarnings("unchecked")
@Override
protected void renderMergedOutputModel(Map model, HttpServletRequest request,
HttpServletResponse response) throws Exception
{
response.setContentType("text/html");
response.getWriter().write(json);
}
};
Ja izsaucat ASP.NET tīmekļa pakalpojumus no klienta puses, lai tas darbotos, ir jāizmanto application/json
. Manuprāt, tas pats attiecas uz jQuery un Ext ietvariem.